#CF1935F. Andrey 的树

    ID: 6470 传统题 4000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>其他二分查找数据结构搜索DFS贪心树结构*2800

Andrey 的树

安德烈大师非常喜欢树†,因此他有一棵由 nn 个顶点组成的树。

但事情并没有那么简单。季莫费大师决定从树中偷走一个顶点。如果季莫费从树中偷走了顶点 vv,那么顶点 vv 以及所有以 vv 为端点的边都会从树中删除,而其他顶点的编号保持不变。为了防止安德烈感到难过,季莫费决定让得到的图再次成为一棵树。为此,他可以在任意顶点 aabb 之间添加边,但在添加这样的边时,他必须向硕士协助中心支付 ab|a - b| 个硬币。

请注意,得到的树不包含顶点 vv

季莫费还没有决定要从树中移除哪个顶点 vv,因此他想知道对于每个顶点 1vn1 \le v \le n,在移除顶点 vv 之后,为了让图再次成为一棵树所需花费的最少硬币数量,以及需要添加哪些边。


树是一个无向连通且不含环的图。

输入

每个测试包含多个测试用例。第一行包含一个整数 tt1t1041 \le t \le 10^4)—— 测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn5n21055 \le n \le 2 \cdot 10^5)—— 安德烈树中的顶点数量。

接下来的 n1n - 1 行包含树的边的描述。其中第 ii 行包含两个整数 uiu_iviv_i1ui,vin1 \le u_i, v_i \le n)—— 第 ii 条边所连接的两个顶点的编号。

保证给定的边构成一棵树。

保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5

输出

对于每个测试用例,按照以下格式输出答案:

对于每个顶点 vv(按从 11nn 的顺序),在第一行输出两个整数 wwmm —— 在移除顶点 vv 后,为了让图重新成为一棵树所需花费的最少硬币数量,以及添加的边的数量。

然后输出 mm 行,每行包含两个整数 aabb1a,bn1 \le a, b \le nava \ne vbvb \ne vaba \ne b)—— 添加的边的端点。

如果存在多种添加边的方式,你可以输出任意一种使得总代价最小的方案。

示例

输入

3
5
1 3
1 4
4 5
3 2
5
4 2
4 3
3 5
5 1
5
2 1
1 5
1 4
1 3

输出

1 1
3 4

0 0

1 1
1 2

2 1
3 5

0 0

0 0

0 0

1 1
1 2

1 1
1 2

1 1
1 2

3 3
2 3
4 5
3 4

0 0

0 0

0 0

0 0

注意

在第一个测试用例中:

考虑移除顶点 44 的情况:

最优解是添加一条从顶点 55 到顶点 33 的边。这样花费为 53=2|5 - 3| = 2 个硬币。

在第三个测试用例中:

考虑移除顶点 11 的情况:

最优解是:

  • 添加一条从顶点 22 到顶点 33 的边,花费 23=1|2-3| = 1 个硬币。
  • 添加一条从顶点 33 到顶点 44 的边,花费 34=1|3-4| = 1 个硬币。
  • 添加一条从顶点 44 到顶点 55 的边,花费 45=1|4-5| = 1 个硬币。

那么总共花费 1+1+1=31 + 1 + 1 = 3 个硬币。

考虑移除顶点 22 的情况:

这句话的翻译是:

不需要添加任何边,因为移除该顶点后图仍然是一棵树。