Useful Decomposition
Contest: Avito Code Challenge 2018
Difficulty rating: 1400
Tags: implementation, trees

Ramesses knows a lot about problems involving trees (undirected connected graphs without cycles)!

He created a new useful tree decomposition, but he does not know how to construct it, so he asked you for help!

The decomposition is the splitting the edges of the tree in some simple paths in such a way that each two paths have at least one common vertex. Each edge of the tree should be in exactly one path.

Help Remesses, find such a decomposition of the tree or derermine that there is no such decomposition.

Input format:
The first line contains a single integer $$$n$$$ ($$$2 \leq n \leq 10^{5}$$$) the number of nodes in the tree.

Each of the next $$$n - 1$$$ lines contains two integers $$$a_i$$$ and $$$b_i$$$ ($$$1 \leq a_i, b_i \leq n$$$, $$$a_i \neq b_i$$$) — the edges of the tree. It is guaranteed that the given edges form a tree.

Output format:
If there are no decompositions, print the only line containing "No".

Otherwise in the first line print "Yes", and in the second line print the number of paths in the decomposition $$$m$$$.

Each of the next $$$m$$$ lines should contain two integers $$$u_i$$$, $$$v_i$$$ ($$$1 \leq u_i, v_i \leq n$$$, $$$u_i \neq v_i$$$) denoting that one of the paths in the decomposition is the simple path between nodes $$$u_i$$$ and $$$v_i$$$.

Each pair of paths in the decomposition should have at least one common vertex, and each edge of the tree should be presented in exactly one path. You can print the paths and the ends of each path in arbitrary order.

If there are multiple decompositions, print any.

Constraints:
Time limit: 1.0 s
Memory limit: 256.0 MB

Note:
The tree from the first example is shown on the picture below:  The number next to each edge corresponds to the path number in the decomposition. It is easy to see that this decomposition suits the required conditions.

The tree from the second example is shown on the picture below:  We can show that there are no valid decompositions of this tree.

The tree from the third example is shown on the picture below:  The number next to each edge corresponds to the path number in the decomposition. It is easy to see that this decomposition suits the required conditions.

Example input:
4
1 2
2 3
3 4

Example output:
Yes
1
1 4

Example input:
6
1 2
2 3
3 4
2 5
3 6

Example output:
No

Editorial:
Let's prove that all paths in this decomposition have one intersection vertex.
1)
Any pair of paths have exactly one intersecting vertex, because else there are common edge (so it is not a decomposition) or cycle (so graph is not a tree).
2)
Let's assume that there are several intersection points.
Let us have three paths $$$A$$$, $$$B$$$, $$$C$$$, and intersecting points are $$$P(AB), P(AC), P(BC)$$$.
Then these intersecting points are pairwise different, but $$$P(AB) \to P(AC) \to P(BC)$$$ — cycle in the tree, so we get a contradiction.
So we proved that for each triple of paths all intersection points are the same, $$$\to$$$ all paths in this decomposition have one intersecting vertex.
So we proved that we can decompose the tree only if the tree looks like a vertex and several paths incoming from it. So you can choose the root in this tree — vertex with degree bigger than two (if there are no such vertex then the tree is bamboo and you can check that case separately or take any vertex as root). If there are several such vertices, when there is no decomposition. And then you can connect root with all leaves.
Bonus: on minimum/maximum number of paths?
300iq's solution