Олимпиадный тренинг

Задача . D. Непростое дерево


Дано дерево с \(n\) вершинами.

Вам необходимо создать массив \(a_1, a_2, \ldots, a_n\) длины \(n\), состоящий из различных целых чисел от \(1\) до \(2 \cdot n\). При этом для каждого ребра \(u_i \leftrightarrow v_i\) дерева значение \(|a_{u_i} - a_{v_i}|\) не должно быть простым числом.

Найдите любой массив, удовлетворяющий этим условиям, либо сообщите, что такого массива нет.

Входные данные

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число \(t\) (\(1 \le t \le 10^4\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит одно целое число \(n\) (\(2 \le n \le 2 \cdot 10^5\)) — количество вершин в дереве.

В следующих \(n - 1\) строках каждого набора входных данных заданы ребра дерева: по одному в строке. В \(i\)-й строке заданы два целых числа \(u_i\) и \(v_i\) (\(1 \le u_i, v_i \le n\); \(u_i \neq v_i\)), обозначающих ребро между вершинами \(u_i\) и \(v_i\).

Гарантируется, что заданные ребра образуют дерево.

Гарантируется, что сумма значений \(n\) по всем наборам входных данных не превосходит \(2 \cdot 10 ^ 5\).

Выходные данные

Для каждого набора входных данных, если массив, удовлетворяющий условиям, существует, выведите его элементы \(a_1, a_2, \ldots, a_n\). Иначе, выведите единственное число \(-1\).

Примечание

Ниже представлены возможные ответы. Вместо номеров вершин в них записаны соответствующие элементы массива \(a\).

Изображение дерева в первом наборе
Изображение дерева во втором наборе

Примеры
Входные данныеВыходные данные
1 2
5
1 2
2 3
2 4
3 5
7
1 2
1 3
2 4
3 5
3 6
3 7
2 10 1 6 5 
8 7 12 1 4 6 3

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя