using namespace std;
#include <set>
#include <map>
#include <list>
#include <deque>
#include <stack>
#include <queue>
#include <cmath>
#include <cstdio>
#include <vector>
#include <string>
#include <bitset>
#include <utility>
#include <algorithm>
#define pb push_back
#define sz size
#define f first
#define s second
#define II inline
#define ll long long
#define db double
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define all(v) v.begin() , v.end()
#define CC(v) memset((v),0,sizeof((v)))
#define CP(v,w) memcpy((v),(w),sizeof((w)))
#define mp make_pair
#define IN "nums.in"
#define OUT "nums.out"
#define N_MAX 1<<17
#define C_MAX 100000
typedef pair<char,int> pc;
typedef vector<pc> Vc;
typedef vector<string> VS;
vector<pc> Trie[1<<22];
char buffer[1<<23],sir[1<<17];
int Nr[1<<22],A[1<<18];
int size(-1),x,N,next;
II void scan()
{
freopen(IN,"r",stdin);
freopen(OUT,"w",stdout);
scanf("%d",&N);
}
II void insert(int nod,char *p)
{
if(*p == '\n')
return;
bool ok(false);
for(Vc::iterator it = Trie[nod].begin();it != Trie[nod].end();++it)
if(it->f == *p)
{
++Nr[it->s];
insert(it->s,p+1);
ok = true;
}
if(!ok)
{
Trie[nod].pb( mp(*p,++next) );
sort(Trie[nod].begin(),Trie[nod].end() );
++Nr[next];
insert(next,p+1);
}
}
II void querry(int nod)
{
for(Vc::iterator it = Trie[nod].begin();it != Trie[nod].end();++it)
if(Nr[it->s] < x)
{
x -= Nr[it->s];
continue;
}
else
{
buffer[++size] = it->f;
querry(it->s);
return;
}
}
II int querry(int nod,int st,int dr)
{
if(st==dr)
return st;
int ln = (nod<<1);
int rn = ln+1;
int mij = (st+dr)>>1;
if(A[ln] < x)
{
x -= A[ln];
return querry(rn,mij+1,dr);
}
return querry(ln,st,mij);
}
II void update(int nod,int st,int dr)
{
if(st==dr)
{
++A[nod];
return;
}
int ln = (nod<<1);
int rn = ln+1;
int mij = (st+dr)>>1;
if(x <= mij)
update(ln,st,mij);
else
update(rn,mij+1,dr);
A[nod] = A[ln] + A[rn];
}
II void solve()
{
next = (C_MAX) << 1;
int tip;
FOR(i,1,N)
{
scanf("%d",&tip);
if(!tip)
{
scanf("%d",&x);
querry( querry(1,1,C_MAX) );
buffer[++size] = '\n';
continue;
}
fgets(sir,1<<17,stdin);
for(x=0;sir[x] != '\n' && sir[x] != '\0';++x);
--x;
update(1,1,C_MAX);
insert(x,sir+1);
}
printf("%s\n",buffer);
}
int main()
{
scan();
solve();
// printf("Time %d ms\n",clock() );
return 0;
}