#include <bits/stdc++.h>
using namespace std;
const int INF = 1e8 + 5;
int n, dist[305][305];
vector<int> v, ans;
void move(int cur, int goal) {
  int i;
  while (cur != goal) {
    for (i = 0; i < n; i++)
      if (dist[i][cur] == 1 && dist[i][goal] < dist[cur][goal]) break;
    cur = i;
    ans.push_back(cur);
  }
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (i != j) dist[i][j] = INF;
  for (int i = 0; i < n - 1; i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    dist[a][b] = dist[b][a] = 1;
  }
  for (int k = 0; k < n; k++)
    for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
        dist[i][j] = min(dist[i][j], dist[i][k] + dist[j][k]);
  v.push_back(0);
  int a;
  while (cin >> a) v.push_back(a - 1);
  v.push_back(0);
  ans.push_back(0);
  for (int i = 0; i < v.size() - 1; i++) move(v[i], v[i + 1]);
  if (ans.size() - 1 != (n - 1) * 2) {
    cout << -1 << endl;
    return 0;
  }
  for (int i = 0; i < ans.size(); i++) cout << ans[i] + 1 << " ";
  cout << endl;
  return 0;
}
