#include <bits/stdc++.h>
using namespace std;
long long n, u, v, leaf;
vector<long long> adj[310], res;
long long par[310];
void get_path(long long st, long long End) {
  if (st == End) return;
  get_path(st, par[End]);
  res.push_back(End);
}
void dfs(long long st, long long End) {
  queue<long long> q;
  q.push(st);
  memset(par, -1, sizeof(par));
  par[st] = 0;
  long long sz = 1;
  for (; q.size(); sz = q.size()) {
    while (sz--) {
      long long u = q.front();
      q.pop();
      if (u == End) {
        get_path(st, End);
        return;
      }
      for (auto v : adj[u]) {
        if (par[v] == -1) {
          q.push(v);
          par[v] = u;
        }
      }
    }
  }
}
int main() {
  cin >> n;
  for (int i = 1; i < n; i++) {
    cin >> u >> v;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  vector<long long> leaves;
  while (cin >> leaf) {
    leaves.push_back(leaf);
  }
  leaves.push_back(1);
  u = 1;
  for (int i = 0; i < leaves.size(); i++) {
    v = leaves[i];
    dfs(u, v);
    u = v;
  }
  if (res.size() != n * 2 - 2) return cout << -1, 0;
  cout << 1 << " ";
  for (int i = 0; i < res.size(); i++) {
    cout << res[i] << " ";
  }
  return 0;
}
