#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long double ld; typedef long long ll; typedef unsigned long long ull; typedef pair i_i; typedef pair ll_i; typedef pair i_ll; typedef pair d_i; typedef pair ll_ll; typedef pair d_d; struct edge { int u, v; ll w; }; #define rep(i, N) for (int i = 0; i < (int)(N); i++) #define pb push_back int INF = INT_MAX / 10; ll MOD = 1000000007; ll _MOD = 1000000009; double EPS = 1e-10; int main() { int N, M, j0; cin >> N >> M >> j0; j0--; vector a(M), b(M); rep(j, M) { if (j == j0) { string s, t; cin >> s >> t; } else { cin >> a[j] >> b[j]; a[j]--; b[j]--; } } vector p(N); rep(i, N) p[i] = i + 1; rep(j, j0) swap(p[a[j]], p[b[j]]); vector q(N); rep(i, N) cin >> q[i]; for (int j = M - 1; j > j0; j--) swap(q[a[j]], q[b[j]]); vector ans; rep(i, N) if (p[i] != q[i]) ans.pb(i); cout << ans[0] + 1 << ' ' << ans[1] + 1 << endl; }