CF BUDDY
← Problems·

1278E · Tests for problem D

2200 · constructive algorithms, dfs and similar, divide and conquer

Problem: We had a really tough time generating tests for problem D. In order to prepare strong tests, we had to solve the following problem.

Given an undirected labeled tree consisting of nn vertices, find a set of segments such that:

  1. both endpoints of each segment are integers from 11 to 2n2n, and each integer from 11 to 2n2n should appear as an endpoint of exactly one segment;
  2. all segments are non-degenerate;
  3. for each pair (i,j)(i, j) such that iji \ne j, i[1,n]i \in [1, n] and j[1,n]j \in [1, n], the vertices ii and jj are connected with an edge if and only if the segments ii and jj intersect, but neither segment ii is fully contained in segment jj, nor segment jj is fully contained in segment ii.

Can you solve this problem too?

Input Format: The first line contains one integer nn (1n51051 \le n \le 5 \cdot 10^5) — the number of vertices in the tree.

Then n1n - 1 lines follow, each containing two integers xix_i and yiy_i (1xi,yin1 \le x_i, y_i \le n, xiyix_i \ne y_i) denoting the endpoints of the ii-th edge.

It is guaranteed that the given graph is a tree.

Output Format: Print nn pairs of integers, the ii-th pair should contain two integers lil_i and rir_i (1li<ri2n1 \le l_i < r_i \le 2n) — the endpoints of the ii-th segment. All 2n2n integers you print should be unique.

It is guaranteed that the answer always exists.

Sample Cases

Case 1

Input

6
1 2
1 3
3 4
3 5
2 6

Output

9 12
7 10
3 11
1 5
2 4
6 8

Case 2

Input

1

Output

1 2

Similar problems

00:00:00
Loading editor…
Welcome! I'm your coding tutor for this problem. Use the chips below to reveal stored hints or get AI feedback on your code. I'll guide you step by step — never giving away the solution.

Sign in to unlock AI tutor feedback