#include <bits/stdc++.h>
using namespace std;
vector<int> arr[1000], path;
int leaf[1000];
int out[1000];
int res[1000][1000];
int ind, f;
void dfs(int src, int des, int len, int par) {
  out[len] = src;
  if (src == des) {
    for (int i = 0; i < len; ++i) {
      path.push_back(out[i]);
    }
    return;
  }
  for (int i = 0, ln = arr[src].size(); i < ln; ++i) {
    int y = arr[src][i];
    if (y != par) dfs(y, des, len + 1, src);
  }
}
int main() {
  int n, k = 1;
  int a, b;
  int c;
  scanf("%d", &n);
  for (int i = 0; i < n - 1; ++i) {
    scanf("%d%d", &a, &b);
    arr[--a].push_back(--b);
    arr[b].push_back(a);
  }
  leaf[0] = 0;
  while (scanf(" %d", &c) > 0) leaf[k++] = c - 1;
  leaf[k++] = 0;
  f = 1;
  for (int i = 0; i < k - 1; ++i) {
    dfs(leaf[i], leaf[i + 1], 0, -1);
  }
  path.push_back(0);
  if (path.size() == n * 2 - 1) {
    printf("%d", path[0] + 1);
    for (int i = 1; i < path.size(); i++) {
      printf(" %d", path[i] + 1);
    }
    puts("");
  } else
    puts("-1");
}
