#include <bits/stdc++.h>
using namespace std;
const int N = 305;
vector<int> adj[N], ans;
int d[N], par[N], p[N];
void dfs(int p, int v) {
  d[v] = d[p] + 1;
  par[v] = p;
  for (int i = 0; i < adj[v].size(); i++) {
    int u = adj[v][i];
    if (u != p) dfs(v, u);
  }
}
void go(int u, int v) {
  vector<int> tou, tov;
  if (d[u] < d[v]) {
    while (d[u] != d[v]) {
      tov.push_back(v);
      v = par[v];
    }
  } else {
    while (d[u] != d[v]) {
      u = par[u];
      tou.push_back(u);
    }
  }
  while (u != v) {
    u = par[u];
    tou.push_back(u);
    tov.push_back(v);
    v = par[v];
  }
  reverse(tov.begin(), tov.end());
  for (int i = 0; i < tou.size(); i++) ans.push_back(tou[i]);
  for (int i = 0; i < tov.size(); i++) ans.push_back(tov[i]);
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n - 1; i++) {
    int u, v;
    cin >> u >> v;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  dfs(0, 1);
  int k = 0;
  for (int i = 2; i <= n; i++) k += (adj[i].size() == 1);
  for (int i = 0; i < k; i++) cin >> p[i];
  ans.push_back(1);
  go(1, p[0]);
  for (int i = 1; i < k; i++) go(p[i - 1], p[i]);
  go(p[k - 1], 1);
  if (ans.size() != 2 * n - 1)
    cout << -1 << endl;
  else {
    for (int i = 0; i < ans.size(); i++) cout << ans[i] << " ";
    cout << endl;
  }
  return 0;
}
