#include <bits/stdc++.h>
using namespace std;
int b[100005][3];
int a[300005];
int mp[300005];
vector<int> ans1, ans2;
int vis[300005];
int cmp(const int &a, const int &b) { return mp[a] < mp[b]; }
int main() {
  int i, j, n, m, k, q, p1, p2;
  scanf("%d", &n);
  for (i = 1; i <= 3 * n; i++) {
    scanf("%d", &a[i]);
    mp[a[i]] = i;
  }
  for (i = 1; i <= n; i++) {
    for (j = 0; j < 3; j++) {
      scanf("%d", &b[i][j]);
    }
    sort(b[i], b[i] + 3, cmp);
    vis[b[i][0]] = 1;
  }
  scanf("%d", &k);
  if (vis[k]) {
    for (i = 1; i <= n; i++) {
      if (mp[b[i][0]] <= mp[k]) {
        if (b[i][0] == k) {
          q = max(b[i][1], b[i][2]);
        }
        for (j = 0; j <= 2; j++) ans1.push_back(b[i][j]);
      } else {
        for (j = 0; j <= 2; j++) ans2.push_back(b[i][j]);
      }
    }
    sort(ans1.begin(), ans1.end());
    int flag = 0;
    for (i = 0; i < ans1.size(); i++) {
      if (ans1[i] != k) {
        if (flag++) printf(" ");
        printf("%d", ans1[i]);
      }
      if (ans1[i] == q) break;
    }
    for (i++; i < ans1.size(); i++) {
      if (ans1[i] != k) ans2.push_back(ans1[i]);
    }
    sort(ans2.begin(), ans2.end());
    for (i = 0; i < ans2.size(); i++) {
      if (flag++) printf(" ");
      printf("%d", ans2[i]);
    }
  } else {
    int flag = 0;
    for (i = 1; i <= 3 * n; i++) {
      if (i != k) {
        if (flag++) printf("");
        printf("%d ", i);
      }
    }
  }
  return 0;
}
