#include #define pb push_back #define mp make_pair #define fi first #define se second using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair pii; typedef pair pll; template bool chkmax(T &x,T y){return x bool chkmin(T &x,T y){return x>y?x=y,true:false;} int readint(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } const int cys=998244353; int n; int opt[5000005],x[5000005],a[5000005],ans[5000005]; int main(){ n=readint(); for(int i=1;i<=n;i++){ opt[i]=readint(); x[i]=readint(); if(opt[i]==1) a[x[i]]++; } int min1=n+1,min2=n+1; for(int i=1;i<=n;i++){ if(a[i]) continue; if(min1>n) min1=i; else{ min2=i; break; } } for(int i=n;i>=1;i--){ if(opt[i]==2){ if(min1==x[i]) ans[i]=min2; else ans[i]=min1; } else{ a[x[i]]--; if(a[x[i]]) continue; if(x[i]