#include <bits/stdc++.h>
using namespace std;
const int INF = 2147483647;
const double PI = 3.141592653589793;
const int N = 1505;
int suma[N], ojciec[N], i, j, x[N], y[N], res[N], a, b, n;
vector<int> graf[N], wek;
void jedz(int a, int o) {
  ojciec[a] = o;
  int i, s = 1;
  for (i = 0; i < graf[a].size(); i++)
    if (graf[a][i] != o) {
      jedz(graf[a][i], a);
      s += suma[graf[a][i]];
    }
  suma[a] = s;
}
bool cmp(int a, int b) {
  if (x[a] * 1LL * y[b] - x[b] * 1LL * y[a] == 0) {
    if (x[a] == x[b]) return abs(y[a]) < abs(y[b]);
    return abs(x[a]) < abs(x[b]);
  }
  return x[a] * 1LL * y[b] - x[b] * 1LL * y[a] > 0;
}
void wypisz(int a, vector<int> &wek) {
  printf("a = %d\nwek = ", a);
  for (int i = 0; i < wek.size(); i++) printf("%d ", wek[i]);
  printf("\n");
}
void porz(int a, vector<int> &wek) {
  if (wek.size() == 0)
    while (1) {
    }
  int ind, i, dx, dy, w, j;
  vector<int> wek2;
  ind = 0;
  for (i = 1; i < wek.size(); i++)
    if (pair<int, int>(y[wek[i]], x[wek[i]]) <
        pair<int, int>(y[wek[ind]], x[wek[ind]]))
      ind = i;
  w = wek[ind];
  res[w] = a;
  dx = x[w];
  dy = y[w];
  wek[ind] = wek[wek.size() - 1];
  wek.pop_back();
  for (i = 0; i < wek.size(); i++) {
    x[wek[i]] -= dx;
    y[wek[i]] -= dy;
  }
  sort(wek.begin(), wek.end(), cmp);
  for (i = 0; i < wek.size(); i++) {
    x[wek[i]] += dx;
    y[wek[i]] += dy;
  }
  j = 0;
  for (i = 0; i < graf[a].size(); i++)
    if (graf[a][i] != ojciec[a]) {
      wek2.resize(0);
      for (j = j; wek2.size() < suma[graf[a][i]]; j++) {
        wek2.push_back(wek[j]);
      }
      porz(graf[a][i], wek2);
    }
}
int main() {
  scanf("%d", &n);
  for (i = 0; i < n; i++) graf[i].resize(0);
  for (i = 0; i < n - 1; i++) {
    scanf("%d %d", &a, &b);
    a--;
    b--;
    graf[a].push_back(b);
    graf[b].push_back(a);
  }
  for (i = 0; i < n; i++) {
    scanf("%d %d", &x[i], &y[i]);
  }
  if (n == 1) {
    printf("1\n");
    return 0;
  }
  if (n == 2) {
    printf("1 2\n");
    return 0;
  }
  jedz(0, -1);
  wek.resize(0);
  for (i = 0; i < n; i++) wek.push_back(i);
  porz(0, wek);
  for (i = 0; i < n; i++) printf("%d ", res[i] + 1);
  printf("\n");
  return 0;
}
