Andrew and His Bike


Andrew recently bought a new motorbike and wants to try it out on the roads of TreeLand. As the name suggests, Treeland is in the shape of a Tree, i.e, it is an undirected acyclic graph. Treeland has n junctions connected by n-1 roads. It is guaranteed that treeland is connected, i.e, any two junctions are reachable from each other. Andrew is at junction number 1. Andrew wants to ride his bike on a valid path from junction number 1 to another junction (he may even come back to junction number 1). A valid path is one which visits any given junction atmost 2 times.

There is another constraint for the movement of Andrew on his bike. Let us root the tree at node number 1. Let d(u) be the distance of u from node number 1. Andrew is said to be going down if he moves from an ancestor of u to u directly. Similarly Andrew is said to be going up if he moves from u to an ancestor of u directly.

Initially when Andrew is at node 1 he moves in the downward direction. Later he may change his direction to upward. However he cannot change it back to downward, i.e, on a valid path Andrew’s direction can change atmost once.

For all v from 1 to n, tell Andrew the number of valid paths from junction numbered 1 to junction numbered v.

Note that a path must involve Andrew crossing non zero number of edges. Thus, a path beginning at junction number 1 and ending at junction number 1, cannot be only the vertex 1. It must visit some another node and then return back to 1.

The first line contains a number n denoting the number of junctions.
The next n-1 lines contain a pair of integers u v denoting there is a road between junction numbered u and junction numbered v.

Print n space separated integers where the vth integer denotes the number of valid paths from junction numbered 1 to junction numbered v.

There are no self-loops or multiple edges and it is guaranteed that the tree is connected.

Note: A road between u and v means one can travel from u to v and vice versa.