#include <bits/stdc++.h>
using graph = std::vector<std::vector<int> >;
void DFS(int node, int node_parent, const graph& G, std::vector<int>& parent,
         graph& kids, std::vector<std::vector<int> >& v_to_child) {
  parent[node] = node_parent;
  kids[node].push_back(node);
  for (int i = 0; i < G.size(); i++) v_to_child[node][i] = -1;
  for (int i = 0; i < G[node].size(); i++) {
    int child = G[node][i];
    if (node_parent != child) {
      DFS(child, node, G, parent, kids, v_to_child);
      for (int j = 0; j < kids[child].size(); j++)
        v_to_child[node][kids[child][j]] = i;
      kids[node].insert(kids[node].end(), kids[child].begin(),
                        kids[child].end());
    } else {
      for (int j = 0; j < G.size(); j++)
        if (v_to_child[node][j] == -1) v_to_child[node][j] = i;
    }
  }
}
int main() {
  int n, a, b, k = 0;
  std::scanf("%d", &n);
  graph G(n, std::vector<int>());
  graph kids(n, std::vector<int>());
  std::vector<int> parent(n, -1), visited(n, 0);
  std::vector<std::vector<int> > v_to_child(n, std::vector<int>(n, -1));
  for (int i = 0; i < n - 1; i++) {
    std::scanf("%d%d", &a, &b);
    G[a - 1].push_back(b - 1);
    G[b - 1].push_back(a - 1);
  }
  for (int i = 1; i < n; i++)
    if (G[i].size() == 1) k += 1;
  std::vector<int> order(k), result;
  for (int i = 0; i < k; i++) std::scanf("%d", &order[i]);
  for (int i = 0; i < k; i++) order[i]--;
  DFS(0, -1, G, parent, kids, v_to_child);
  bool is_ok = true;
  result.push_back(0);
  for (int i = 0; i < k && is_ok; i++) {
    int current = result[result.size() - 1];
    while (current != order[i]) {
      int next = G[current][v_to_child[current][order[i]]];
      if (next == parent[current]) {
        visited[current] = true;
      } else if (visited[next]) {
        is_ok = false;
        break;
      }
      current = next;
      result.push_back(next);
    }
  }
  {
    int current = result[result.size() - 1];
    while (current) {
      current = parent[current];
      result.push_back(current);
    }
  }
  if (is_ok) {
    for (int i = 0; i < result.size(); i++) std::printf("%d ", result[i] + 1);
    std::printf("\n");
  } else
    std::printf("-1\n");
  return 0;
}
