#include <bits/stdc++.h>
using namespace std;
int n, head[3001], tot = 0, a[6001], al = 0, b, endss = 1;
struct node {
  int to, nxt;
} e[6001];
void add(int u, int v) {
  tot++, e[tot].to = v, e[tot].nxt = head[u], head[u] = tot;
}
bool dfs(int s, int gfa) {
  if (s == endss) return true;
  for (int i = head[s]; i; i = e[i].nxt) {
    int v = e[i].to;
    if (v != gfa && dfs(v, s)) {
      a[++al] = v;
      return true;
    }
  }
  return false;
}
int main() {
  cin >> n;
  int m = n - 1, u, v;
  while (m--) {
    cin >> u >> v;
    add(u, v);
    add(v, u);
  }
  endss = 1;
  while (cin >> b) {
    dfs(b, 0);
    endss = b;
  }
  dfs(1, 0);
  a[++al] = 1;
  if (al > 2 * n - 1)
    cout << -1;
  else
    for (int i = 1; i <= al; i++) cout << a[i] << " ";
  return 0;
}
