#include<stdio.h>
#include<string>
#include<vector>
using namespace std;
FILE*fin=fopen("nums.in","r");
FILE*fout=fopen("nums.out","w");
#define nn 1000000
int value[nn],nrnod=1,dir[nn][10],cmax=0,n;
char s[100005],sa[2],si[100005];
int find(int nod,int poz)
{
if(poz==cmax) return 1;
if(dir[nod][si[poz]-'0']) return find(dir[nod][si[poz]-'0'],poz+1);
else return 0;
}
void ins(int nod,int poz)
{
value[nod]++;
if(poz==cmax) return ;
if(!dir[nod][si[poz]-'0'])
{
nrnod++;
dir[nod][si[poz]-'0']=nrnod;
}
ins(dir[nod][si[poz]-'0'],poz+1);
}
void getkth(int nod,int poz,int k)
{
int cv=0,i,nnod,pv=0;
for(i=0;i<=9;i++)
{
nnod=dir[nod][i];
pv=cv;
cv+=value[nnod];
if(cv>=k)
{
si[poz]=char('0'+i);
if(poz==cmax-1) return ;
else getkth(nnod,poz+1,k-pv);
return ;
}
}
}
int main()
{
int i,j,k,dim,is
;
fscanf(fin,"%d\n",&n);
for(i=1;i<=n;i++)
{
fscanf(fin,"%s",&sa);
fscanf(fin,"%s",&s);
dim=strlen(s);
if(sa[0]=='1') cmax=max(cmax,dim);
}
fclose(fin);
FILE*fin=fopen("nums.in","r");
fscanf(fin,"%d\n",&n);
for(i=1;i<=n;i++)
{
fscanf(fin,"%s",&sa);
fscanf(fin,"%s",&s);
dim=strlen(s);
for(j=0;j<cmax-dim;j++)
si[j]='0';
for(j=0;j<dim;j++)
si[cmax-dim+j]=s[j];
if(sa[0]=='1')
{
is=find(1,0);
if(!is) ins(1,0);
}
else
{
k=0;
for(j=0;j<dim;j++)
k=k*10+(s[j]-'0');
getkth(1,0,k);
j=0;
while(si[j]=='0') j++;
for(;j<cmax;j++)
fprintf(fout,"%c",si[j]);
fprintf(fout,"\n");
}
}
fclose(fin);
fclose(fout);
return 0;
}