
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define inf 1e18
const int mod=1e9+7;
const int N=1e5+5;
int n,m,vis[N],t[N],c[N],a[N];
map<int,int>mp;
void solve(){
cin>>n;
for(int i=1;i<=n;i++){
int x,y;
cin>>x>>y;
mp[x]=y;
mp[y]=x;
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>a[i];
vis[a[i]]=1;
t[a[i]]=i;
}
for(int i=1;i<=m;i++){
if(mp.count(a[i])==0||vis[mp[a[i]]]==0){
vis[a[i]]=0;
}
}
map<int,int>f;
for(int i=1;i<=m;i++){
if(vis[a[i]]==1&&f.count(a[i])==0){
f[mp[a[i]]]=1;
int x=i,y=t[mp[a[i]]];
if(y-x==1){
c[x-1]+=1;
c[x]-=1;
c[y+1]+=1;
c[y+2]-=1;
}
else if(x-y==1){
c[y-1]+=1;
c[y]-=1;
c[x+1]+=1;
c[x+2]-=1;
}
else if(y>x){
c[x+1]+=1;
c[y]-=1;
}
else{
c[y+1]+=1;
c[x]-=1;
}
}
}
int ans=0,s[N];
for(int i=1;i<=m;i++){
c[i]+=c[i-1];
if(vis[a[i]]==0){
ans=max(ans,c[i]);
}
}
vector<int>v;
for(int i=1;i<=m;i++){
if(vis[a[i]]==0&&c[i]==ans){
v.push_back(a[i]);
}
}
sort(v.begin(),v.end());
for(int i=0;i<v.size();i++){
printf("%05d",v[i]);
if(i!=v.size()-1) cout<<" ";
}
}
signed main(){
int tt=1;
while(tt--) solve();
return 0;
}