#include <bits/stdc++.h>
using namespace std;
const int P = 1e9 + 7;
int add(int a, int b) {
  if ((a += b) >= P) a -= P;
  return a;
}
int sub(int a, int b) {
  if ((a -= b) < 0) a += P;
  return a;
}
int mul(int a, int b) { return 1ll * a * b % P; }
int kpow(int a, int b) {
  int r = 1;
  for (; b; b >>= 1, a = mul(a, a)) {
    if (b & 1) r = mul(r, a);
  }
  return r;
}
const int N = 101010;
int n, k;
int sa[N * 3], rk[N * 3], a[N][3];
bool vis[N * 3];
bool cmp(int x, int y) { return rk[x] < rk[y]; }
int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(0);
  cin >> n;
  for (int i = (1); i < (n * 3 + 1); i++) cin >> sa[i], rk[sa[i]] = i;
  for (int i = (1); i < (n + 1); i++) {
    for (int j = (0); j < (3); j++) cin >> a[i][j];
    sort(a[i], a[i] + 3, cmp);
  }
  cin >> k;
  vector<int> ans;
  int ind = 0;
  for (int i = (1); i < (n + 1); i++) {
    for (int j = (0); j < (3); j++)
      if (a[i][j] != k) ans.push_back(a[i][j]);
    if (a[i][0] == k) {
      ind = i;
      break;
    }
  }
  sort(ans.begin(), ans.end());
  int la = n;
  for (int i = (0); i < ((int)ans.size()); i++)
    if (ans[i] == a[ind][1] || ans[i] == a[ind][2]) la = i;
  for (auto u : ans) vis[u] = 1;
  for (int i = (1); i < (3 * n + 1); i++)
    if (!vis[i] && i != k) ans.push_back(i);
  sort(ans.begin() + la + 1, ans.end());
  for (auto u : ans) cout << u << " ";
  cout << "\n";
  return 0;
}
