#pragma GCC optimize("Ofast") #include #define ud unsigned int #define ll long long #define ull unsigned long long #define MAX_INF 0x3f #define MAX_INF_VAL 0x3f3f3f3f #define MAX_INF_VAL_LL 0x3f3f3f3f3f3f3f3f //#define pi 3.141592653589 #define eps 1e-9 #define F(x) ((x)/3+((x)%3==1?0:tb)) #define G(x) ((x) void read( T &x ) { x = 0; char ch = getchar(); ll f = 1; while( !isdigit( ch ) ) { if( ch == '-' ) f *= -1; ch = getchar(); } while( isdigit( ch ) ) { x = x * 10 + ch - 48; ch = getchar(); } x *= f; } struct custom_hash { static uint64_t splitmix64( uint64_t x ) { x += 0x9e3779b97f4a7c15; x = ( x ^ ( x >> 30 ) ) * 0xbf58476d1ce4e5b9; x = ( x ^ ( x >> 27 ) ) * 0x94d049bb133111eb; return x ^ ( x >> 31 ); } size_t operator() ( uint64_t x ) const { static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count(); return splitmix64( x + FIXED_RANDOM ); } }; int a[ 5000010 ]; int pre[ 5000010 ], nxt[ 5000010 ]; int main() { ios::sync_with_stdio( false ); cin.tie( 0 ), cout.tie( 0 ); int n; int ans = 0; cin >> n; nxt[ 0 ] = 1; for( int i = 1; i <= n; ++i ) { pre[ i ] = i - 1; nxt[ i ] = i + 1; } for( int i = 1; i <= n; ++i ) { int tp, x; cin >> tp >> x; if( tp == 1 ) { if( a[ x ] ) continue; a[ x ] = 1; pre[ nxt[ x ] ] = pre[ x ]; nxt[ pre[ x ] ] = nxt[ x ]; } else { if( x != nxt[ 0 ] ) cout << nxt[ 0 ] << '\n'; else cout << nxt[ nxt[ 0 ] ] << '\n'; } } return 0; }