C. Нарисуйте дерево
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
stdin
вывод
stdout

Даны дерево с n вершинами и n точек на плоскости, никакие три из которых не лежат на одной прямой.

Вам надо нарисовать заданное дерево на плоскости, используя заданные точки в качестве вершин.

То есть каждой вершине дерева нужно сопоставить ровно одну точку, и каждая точка должна быть сопоставлена какой-либо вершине. Если две вершины дерева соединены ребром, между соответствующими точками должен быть нарисован отрезок. Отрезки, соответствующие несмежным ребрам, не должны иметь общих точек. Отрезки, соответствующие смежным ребрам, должны иметь ровно одну общую точку.

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

В первой строке записано целое число n (1 ≤ n ≤ 1500) — количество вершин в дереве (оно же — количество выбранных точек на плоскости).

В следующих n - 1 строках через пробел записано по два целых числа ui и vi (1 ≤ ui, vi ≤ n, ui ≠ vi) — номера соединенных i-ым ребром вершин дерева.

В следующих n строках через пробел записано по два целых числа xi и yi ( - 109 ≤ xi, yi ≤ 109) — координаты i-ой точки на плоскости. Никакие три точки не лежат на одной прямой.

Гарантируется, что при заданных ограничениях задача имеет решение.

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

Выведите n различных целых чисел от 1 до n через пробел: i-ое число должно равняться номеру вершины, которую надо поместить в i-ую точку (точки нумеруются в порядке их перечисления во входных данных).

Если существует несколько решений, выведите любое.

Примеры
Входные данные
3
1 3
2 3
0 0
1 1
2 0
Выходные данные
1 3 2
Входные данные
4
1 2
2 3
1 4
-1 -2
3 5
-3 3
2 0
Выходные данные
4 2 1 3
Примечание

Возможные ответы для примеров приведены ниже.