#include <bits/stdc++.h>
using namespace std;
const int MAX1 = 5e4 + 7;
long long n, u, v, vertex, leaves, cnt, flag, mod = 1e9 + 7, mark[MAX1];
string s;
vector<long long> adj[MAX1], ans, temp;
void DFS(long long u) {
  mark[u] = 1;
  temp.push_back(u);
  if (u == vertex) {
    for (int i = 1; i < temp.size(); ++i) ans.push_back(temp[i]);
  }
  for (int v : adj[u]) {
    if (!mark[v]) {
      DFS(v);
    }
  }
  temp.pop_back();
}
int main() {
  cin >> n;
  for (int i = 0; i < n - 1; ++i) {
    cin >> u >> v;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  for (int i = 2; i <= n; ++i) {
    if (adj[i].size() == 1) ++leaves;
  }
  ans.push_back(1);
  for (int i = 0; i < leaves; ++i) {
    cin >> vertex;
    fill(mark, mark + 600, 0);
    temp.clear();
    DFS(ans.back());
  }
  fill(mark, mark + 600, 0);
  vertex = 1;
  DFS(ans.back());
  if (ans.size() != 2 * n - 1) {
    cout << -1;
    return 0;
  }
  for (int i = 0; i < ans.size(); ++i) cout << ans[i] << ' ';
  return 0;
}
