mp 的 pair 表示左右两个的连接的节点
#include <bits/stdc++.h>
using namespace std;
int n,q;
map<int,pair<int,int>> mp;
int a[200005];
int s;
signed main(){
// ios::sync_with_stdio(false);
// cin.tie(0),cout.tie(0);
cin >> n;
for(int i=1;i<=n;i++){
cin >> a[i];
}
s=a[1];
for(int i=1;i<=n;i++){
mp[a[i]]={a[i-1],a[i+1]};
}
cin >> q;
for(int i=1;i<=q;i++){
int op,x,y;
cin >> op >> x;
if(op==1)cin >> y;
if(op==1){
if(y!=0)mp[y]={x,mp[x].second};
if(mp[x].second!=0)mp[mp[x].second]={y,mp[mp[x].second].second};
if(x!=0)mp[x]={mp[x].first,y};
}
else{
int xx=mp[x].first,yy=mp[x].second;
if(s==x)s=yy;
if(xx!=0)mp[xx]={mp[xx].first,yy};
if(yy!=0)mp[yy]={xx,mp[yy].second};
}
}
while(mp[s].first!=0||mp[s].second!=0){
cout<<s<<" ";
s=mp[s].second;
if(s==0)break;
}
return 0;
}