문제
While studying combinatorial optimization, Lucas came across the notion of "laminar set family". A subset family of some set is called laminar if and only if it does not contain an empty set and for any two distinct sets it is correct that either or or .
As an experienced problem setter Lucas always tries to apply each new piece of knowledge he gets as an idea for a programming competition problem. An area of his scientific interests covers recognition problems that usually sound like "Given some weird combinatorial property, check if the given structure satisfies it".
Lucas believes that the perfect programming competition problem should contain a cactus a tree in it. Trying to put together laminar sets and trees into a recognition problem, he finally came up with the following problem: given an undirected tree on vertices and a family of sets, where consists of all vertices belonging to the simple path between some two vertices and of the tree, check if the family is a laminar family. Note that in this case , and each .
As you can see, Lucas had succeeded in suggesting this problem to the programming contest. Now it is up to you to solve it.
입력
The first line of the input contains two integers and () — the number of vertices in the tree and the number of elements in a family .
Next lines describe the tree structure. In the -th line there are two integers and (, ) — the indices of the vertices that are connected by the -th edge of the tree.
Next lines describe the sets forming the family . In the -th line there are two integers and (), such that consists of all vertices belonging to the simple path between vertices and in the tree (including and ).
출력
Output the only word "Yes" or "No" depending on whether or not the given set family is laminar.
예제 입력 1
4 2
1 2
2 3
2 4
1 2
4 2
예제 출력 1
No
예제 입력 2
6 5
1 2
2 3
3 4
5 6
5 2
2 1
6 6
1 4
3 4
4 1
예제 출력 2
Yes
코드를 제출하려면 로그인이 필요합니다.
로그인