#include <bits/stdc++.h>
using namespace std;
int const N = 405;
vector<int> grafo[N];
vector<int> ans;
int h[N];
int padre[N];
int P[N][25];
short cs[N][N];
int n;
int pos;
bool posible = 1;
void process() {
  int i, j;
  for (i = 0; i <= n; i++)
    for (j = 0; 1 << j <= n; j++) P[i][j] = -1;
  for (i = 0; i <= n; i++) P[i][0] = padre[i];
  for (j = 1; 1 << j <= n; j++)
    for (i = 0; i <= n; i++)
      if (P[i][j - 1] != -1) P[i][j] = P[P[i][j - 1]][j - 1];
}
int lca(int p, int q) {
  int tmp, log, i;
  if (h[p] < h[q]) tmp = p, p = q, q = tmp;
  for (log = 1; 1 << log <= h[p]; log++)
    ;
  log--;
  for (i = log; i >= 0; i--)
    if (h[p] - (1 << i) >= h[q]) p = P[p][i];
  if (p == q) return p;
  for (i = log; i >= 0; i--)
    if (P[p][i] != -1 && P[p][i] != P[q][i]) p = P[p][i], q = P[q][i];
  return padre[p];
}
void dfs(int nodo, int p = -1, int hi = 0) {
  padre[nodo] = p;
  h[nodo] = hi;
  for (int i = 0; i < grafo[nodo].size(); i++) {
    int v = grafo[nodo][i];
    if (v == p) continue;
    dfs(v, nodo, hi + 1);
  }
}
void ir(int u, int v) {
  if (h[u] > h[v]) {
    while (u != v) {
      cs[u][padre[u]]++;
      cs[padre[u]][u]++;
      if (cs[u][padre[u]] > 2) posible = 0;
      ans.push_back(u);
      u = padre[u];
    }
  } else {
    vector<int> aux;
    int t = u;
    u = v;
    v = t;
    while (u != v) {
      cs[u][padre[u]]++;
      cs[padre[u]][u]++;
      if (cs[u][padre[u]] > 2) posible = 0;
      u = padre[u];
      aux.push_back(u);
    }
    for (int i = aux.size() - 1; i >= 0; i--) ans.push_back(aux[i]);
  }
}
int main() {
  cin >> n;
  for (int i = 1; i < n; i++) {
    int u, v;
    cin >> u >> v;
    grafo[u].push_back(v);
    grafo[v].push_back(u);
  }
  grafo[0].push_back(1);
  dfs(0);
  process();
  vector<int> orden;
  int t;
  while (cin >> t) {
    if (t == 0) break;
    orden.push_back(t);
  }
  orden.push_back(1);
  pos = 1;
  for (int i = 0; i < orden.size() - 1; i++) {
    int LCA = lca(orden[i], orden[i + 1]);
    ir(pos, orden[i]);
    ir(orden[i], LCA);
    pos = LCA;
  }
  ans.push_back(1);
  if (posible)
    for (int i = 0; i < ans.size(); i++) cout << ans[i] << " ";
  else
    cout << -1;
  return 0;
}
