#include <bits/stdc++.h>
using namespace std;
bool path[302][302];
int p2[302][302];
int E[302][302];
vector<int> leaves;
vector<int> ans;
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n - 1; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    a--;
    b--;
    path[a][b] = path[b][a] = true;
    p2[a][b] = p2[b][a] = 1;
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (i == j || p2[i][j]) continue;
      p2[i][j] = 400;
    }
  }
  for (int k = 0; k < n; k++) {
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        p2[i][j] = min(p2[i][j], (p2[i][k] + p2[k][j]));
      }
    }
  }
  int lf;
  while (scanf("%d", &lf) != -1) {
    lf--;
    leaves.push_back(lf);
  }
  leaves.push_back(0);
  int root = 0;
  bool ok = true;
  ans.push_back(root);
  for (int j = 0; j < leaves.size(); j++) {
    while (true) {
      int t = 0;
      for (; t < n; t++) {
        if (path[root][t])
          if (p2[root][leaves[j]] == 1 + p2[t][leaves[j]]) break;
      }
      E[root][t]++;
      E[t][root]++;
      if (E[root][t] > 2) {
        ok = false;
        break;
      } else {
        root = t;
        ans.push_back(root);
      }
      if (t == leaves[j]) break;
    }
    if (!ok) break;
  }
  if (!ok)
    puts("-1");
  else
    for (int i = 0; i < ans.size(); i++) {
      if (i < ans.size())
        printf("%d ", ans[i] + 1);
      else
        printf("%d\n", ans[i] + 1);
    }
  return 0;
}
