#include <bits/stdc++.h>
using namespace std;
long long arr[300100];
pair<pair<long long, long long>, long long> teams[100100];
bool captain[300100];
long long idx[300100];
set<long long> st, st2;
void solveTestCase() {
  long long i, j, k, l, n;
  cin >> n;
  for (i = 1; i <= 3 * n; i++) cin >> j, arr[j] = i;
  for (i = 1; i <= n; i++) {
    cin >> j >> k >> l;
    teams[i].first.first = j;
    teams[i].first.second = k;
    teams[i].second = l;
    long long op = min(arr[j], min(arr[k], arr[l]));
    if (arr[j] == op)
      captain[j] = 1;
    else if (arr[k] == op)
      captain[k] = 1;
    else
      captain[l] = 1;
    idx[j] = idx[k] = idx[l] = i;
  }
  cin >> l;
  if (!captain[l]) {
    for (i = 1; i <= 3 * n; i++)
      if (i != l) cout << i << ' ';
    cout << '\n';
  } else {
    long long mini = 1e9, maxi = 1;
    for (i = 1; i <= idx[l]; i++) {
      long long a = teams[i].first.first;
      long long b = teams[i].first.second;
      long long c = teams[i].second;
      if (a != l) mini = min(mini, a);
      if (b != l) mini = min(mini, b);
      if (c != l) mini = min(mini, c);
    }
    long long a = teams[idx[l]].first.first;
    long long b = teams[idx[l]].first.second;
    long long c = teams[idx[l]].second;
    if (a != l) maxi = max(maxi, a);
    if (b != l) maxi = max(maxi, b);
    if (c != l) maxi = max(maxi, c);
    for (i = idx[l] + 1; i <= n; i++) {
      st.insert(teams[i].first.first);
      st.insert(teams[i].first.second);
      st.insert(teams[i].second);
    }
    for (i = mini; i <= maxi; i++) {
      if (i != l && st.find(i) == st.end()) cout << i << ' ', st2.insert(i);
    }
    for (i = 1; i <= 3 * n; i++) {
      if (i != l && st2.find(i) == st2.end()) cout << i << ' ';
    }
    cout << '\n';
  }
}
int main() {
  long long t, n, i, j, k, l, m;
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long p;
  t = 1;
  for (long long T = 1; T <= t; T++) {
    solveTestCase();
  }
  return 0;
}
