이진 트리 키우기

각 트리에서 루트를 정하고 정점을 최소 개수만큼 추가해 모든 잎이 같은 깊이에 있고 내부 정점이 자식을 정확히 둘 갖는 완전 이진 트리로 만들 때, 추가 횟수를 최소로 하는 루트와 그 횟수를 10^9+7로 나눈 나머지를 구한다.

어려움9트리DFS동적 계획법수학아직 제출이 없습니다시간 제한4초메모리 제한512 MB

문제

바실은 생물정보학 기말 시험을 통과하려고 완전 이진 트리를 키우고 있다. 여기서 완전 이진 트리는 잎이 아닌 모든 정점이 정확히 두 개의 자식을 가지고, 모든 잎이 루트에서 같은 거리에 있는 루트 있는 트리를 말한다.

루트 있는 트리는 정점 하나를 루트로 정한 사이클 없는 연결 무향 그래프이다. 정점 uu의 부모는 uu의 이웃 중 루트에 가장 가까운 정점이고, 루트에는 부모가 없다. 정점의 나머지 이웃은 그 정점의 자식이다. 자식이 없는 정점을 잎이라고 한다.

바실은 한 학기 내내 프로그래밍 대회에만 매달렸다. 시험을 며칠 앞두고 확인해 보니 트리는 자라 있었지만 모양이 원하던 것과 달랐고, 루트조차 정해지지 않은 상태였다. 이제 바실은 정점 하나를 루트로 정한 다음 정점을 추가해 원하는 트리로 만들어야 한다. 하루에 정점 하나를 추가할 수 있고, 추가한 정점은 이미 있는 정점 하나의 자식이 된다. 이미 있는 정점을 지우거나 간선을 다시 잇는 것은 허용하지 않는다.

바실은 작업을 끝낼 수 있는지, 끝낼 수 있다면 어떤 정점을 루트로 정해야 하는지, 그리고 며칠이 걸리는지 알고 싶다. 최소 일수로 끝낼 수 있는 정점이 여러 개라면 번호가 가장 작은 정점을 고른다.

일수는 매우 커질 수 있으므로 109+710^9+7로 나눈 나머지를 출력한다. 최소화하는 대상은 실제 일수이지 나머지가 아니다. 나머지는 출력 직전에 한 번만 구한다.

입력

첫 줄에 테스트 케이스의 개수 tt가 주어진다 (1t1051 \le t \le 10^5).

각 테스트 케이스의 첫 줄에는 트리의 정점 개수 nn이 주어진다 (2n2×1052 \le n \le 2 \times 10^5). 이어지는 n1n-1개의 줄에는 간선으로 연결된 두 정점의 번호 uiu_i, viv_i가 주어진다 (1ui,vin1 \le u_i, v_i \le n). 입력으로 주어지는 그래프는 항상 트리이다.

모든 테스트 케이스의 nn의 합은 2×1052 \times 10^5을 넘지 않는다.

출력

각 테스트 케이스의 답을 한 줄에 하나씩 출력한다.

어떤 정점을 루트로 정해도 모든 잎이 루트에서 같은 거리에 있는 완전 이진 트리를 만들 수 없다면 -1을 출력한다.

만들 수 있다면 루트로 정할 정점의 번호와 최소 일수를 109+710^9+7로 나눈 나머지를 공백으로 구분해 출력한다. 최소 일수가 같은 정점이 여러 개라면 번호가 가장 작은 정점을 출력한다.