#include<iostream>
#include<fstream>
#include<algorithm>
#include<string>
#include<assert.h>
using namespace std;
#define NMAX 100001
struct entry {
int opt;
string s;
};
entry v[NMAX],a[NMAX],b[NMAX];
int arb[4*NMAX+1],poz,sol,l;
inline int compare(string a, string b)
{
int n,m;
n=a.size()-1;
m=b.size()-1;
if(n<m)
return -1;
else if(n>m)
return 1;
else {
int i;
for(i=0;i<=n;i++)
if(a[i]<b[i])
return -1;
else if(a[i]>b[i])
return 1;
return 0;
}
}
inline bool cmp(const entry &a, const entry &b)
{
return (compare(a.s,b.s)<=0);
}
inline bool cmp2(const entry &a, const entry &b)
{
return (a.opt<=b.opt);
}
inline void stand(int n)
{
int i,c;
l=0;
for(i=1;i<=n;i++)
if(v[i].opt==1)
a[++l]=v[i];
sort(a+1,a+l+1,cmp);
c=0;
for(i=1;i<=l;i++) {
if(a[i].s.compare(a[i-1].s)!=0)
c++;
a[i].opt=c;
}
for(i=1;i<=l;i++)
b[i]=a[i];
sort(b+1,b+l+1,cmp2);
}
inline int cbin1(int p, int q, string x)
{
int mij,d;
while(p<=q) {
mij=(p+q)/2;
d=compare(x,a[mij].s);
if(d<0)
q=mij-1;
else if(d>0)
p=mij+1;
else return a[mij].opt;
}
return 0;
}
inline int cbin2(int p, int q, int x)
{
int mij;
while(p<=q) {
mij=(p+q)/2;
if(x<b[mij].opt)
q=mij-1;
else if(x>b[mij].opt)
p=mij+1;
else return mij;
}
return 0;
}
inline void update(int nod, int st, int dr)
{
int mij;
if(st==dr) {
arb[nod]=1;
return ;
}
mij=(st+dr)/2;
if(poz<=mij)
update(nod*2,st,mij);
else update(nod*2+1,mij+1,dr);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
inline void query(int nod, int st, int dr)
{
int mij;
if(st==dr) {
sol=st;
return ;
}
mij=(st+dr)/2;
if(poz<=arb[nod*2])
query(nod*2,st,mij);
else {
poz=poz-arb[2*nod];
query(2*nod+1,mij+1,dr);
}
}
inline int numar(string x)
{
int nr,i,n;
n=x.size()-1;
nr=0;
for(i=0;i<=n;i++)
nr=nr*10+x[i]-48;
return nr;
}
int main ()
{
int n,i;
ifstream f("nums.in");
ofstream g("nums.out");
f>>n;
for(i=1;i<=n;i++)
f>>v[i].opt>>v[i].s;
f.close();
stand(n);
for(i=1;i<=n;i++) {
if(v[i].opt==1) {
poz=cbin1(1,l,v[i].s);
assert(poz>=1 && poz<=l);
update(1,1,l);
}
else {
poz=numar(v[i].s);
query(1,1,l);
assert(sol>=1 && sol<=l);
g<<b[cbin2(1,l,sol)].s<<'\n';
}
}
g.close();
return 0;
}