#include <bits/stdc++.h>
using namespace std;
bool conn[305][305];
int cost[305][305];
int main() {
  memset(conn, false, sizeof(conn));
  for (int i = 0; i < 305; i++)
    for (int j = 0; j < 305; j++) {
      if (i == j)
        cost[i][j] = 0;
      else
        cost[i][j] = 100000000;
    }
  int n;
  cin >> n;
  int m = n - 1;
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    conn[a][b] = conn[b][a] = true;
    cost[a][b] = cost[b][a] = true;
  }
  vector<int> order;
  order.push_back(1);
  int tmp;
  while (cin >> tmp) order.push_back(tmp);
  order.push_back(1);
  int sz = order.size();
  vector<int> ans;
  ans.push_back(1);
  for (int i = 0; i < sz - 1; i++) {
    int init = order[i] - 1, cur = order[i + 1] - 1;
    int par[305];
    memset(par, -1, sizeof(par));
    queue<int> q;
    q.push(init);
    while (!q.empty()) {
      int cur = q.front();
      q.pop();
      for (int nxt = 0; nxt < n; nxt++)
        if (conn[cur][nxt] && par[nxt] == -1 && nxt != init) {
          par[nxt] = cur;
          q.push(nxt);
        }
    }
    vector<int> tmp;
    while (cur != init) {
      tmp.push_back(cur + 1);
      cur = par[cur];
    }
    int l = tmp.size();
    for (int i = 0; i < l; i++) ans.push_back(tmp[l - 1 - i]);
  }
  sz = ans.size();
  if (sz != 2 * n - 1)
    cout << -1 << endl;
  else {
    for (int i = 0; i < sz; i++) {
      if (i) cout << " ";
      cout << ans[i];
    }
    cout << endl;
  }
  return 0;
}
