#include <bits/stdc++.h>
using namespace std;
const double pie1 = 3.1415926;
const double pie2 = 3.14159265358979;
const double pie3 = 3.14159265358979323846;
const int vbi = 999999999;
const int vli = -vbi;
const long long vbl = 999999999999999999;
const long long vll = -vbl;
priority_queue<int> pqi;
priority_queue<long long> pql;
queue<int> qi;
queue<long long> ql;
void bin_v() {
  char bin[1000];
  gets(bin);
}
bool pss(int a) {
  for (int i = 2; i <= sqrt(a); i++)
    if (a % i == 0) return false;
  return true;
}
int n;
vector<int> v[310];
int sss[310];
int sum = 0;
vector<int> ljv;
bool dfs(int now, int env, int lastv) {
  if (now == env) {
    return true;
  }
  for (int i = 0; i < v[now].size(); i++) {
    if (v[now][i] == lastv) continue;
    if (dfs(v[now][i], env, now)) {
      ljv.push_back(now);
      return true;
    }
  }
  return false;
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  for (int i = 1; i <= n - 1; i++) {
    int a, b;
    cin >> a >> b;
    v[a].push_back(b);
    v[b].push_back(a);
    sss[a]++;
    sss[b]++;
  }
  for (int i = 2; i <= n; i++) {
    if (sss[i] == 1) {
      sum++;
    }
  }
  int beginv = 1, endv;
  vector<int> ccc;
  for (int i = 1; i <= sum; i++) {
    cin >> endv;
    ljv.clear();
    dfs(beginv, endv, -1);
    for (int j = ljv.size() - 1; j >= 0; j--) ccc.push_back(ljv[j]);
    beginv = endv;
  }
  ljv.clear();
  dfs(endv, 1, -1);
  for (int j = ljv.size() - 1; j >= 0; j--) ccc.push_back(ljv[j]);
  ccc.push_back(1);
  if (ccc.size() != n * 2 - 1)
    cout << -1;
  else
    for (int i = 0; i < ccc.size(); i++) cout << ccc[i] << ' ';
  return 0;
}
