#include <bits/stdc++.h>
using namespace std;
const int INF = int(1e9);
int n;
vector<vector<int>> g;
bool dfs(int u, int p, int to, vector<int> &path) {
  if (u == to) return true;
  for (int v : g[u])
    if (v != p)
      if (dfs(v, u, to, path)) {
        path.emplace_back(v);
        return true;
      }
  return false;
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n;
  g.resize(n + 1);
  for (int i = 0; i < n - 1; i++) {
    int u, v;
    cin >> u >> v;
    g[u].emplace_back(v);
    g[v].emplace_back(u);
  }
  int szleaf = 0;
  for (int i = 2; i <= n; i++) szleaf += (int((g[i]).size()) == 1);
  vector<int> leaf;
  leaf.emplace_back(1);
  for (int i = 0; i < szleaf; i++) {
    int x;
    cin >> x;
    leaf.emplace_back(x);
  }
  leaf.emplace_back(1);
  vector<int> ans;
  for (int i = 0; i < int((leaf).size()) - 1; i++) {
    vector<int> tmp;
    dfs(leaf[i], -1, leaf[i + 1], tmp);
    if (tmp.empty()) {
      cout << -1;
      return 0;
    }
    ans.emplace_back(leaf[i]);
    reverse(tmp.begin(), tmp.end());
    for (int x : tmp)
      if (x != leaf[i + 1]) ans.emplace_back(x);
  }
  ans.emplace_back(1);
  if (int((ans).size()) != 2 * n - 1)
    cout << -1;
  else
    for (int x : ans) cout << x << ' ';
  return 0;
}
