#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
const int N=10005;
struct node{
char name[35];
int price;
};
vector<node>List[N]; //用于解决冲突
unsigned int BKDRHash(char *str){
unsigned int seed=31,key=0;
while(*str)
key=key*seed+(*str++);
return key &0x7fffffff;
}
int main(){
int n,m,key,add,memory_price,ran,len;
int p[N];
char s[35];
node t;
while(cin>>n){
for(int i=0;i<N;i++)
List[i].clear();
for(int i=0;i<n;i++){
cin>>t.name;
t.price=0;
key=BKDRHash(t.name)%N;
List[key].push_back(t);
}
cin>>m;
while(m--){
ran=len=0;
for(int i=0;i<n;i++){
cin>>add>>s;
key=BKDRHash(s)%N;
for(int j=0;j<List[key].size();j++)
if(strcmp(List[key][j].name,s)==0){
List[key][j].price+=add;
if(strcmp(s,"memory")==0)
memory_price=List[key][j].price;
else
p[len++]=List[key][j].price;
break;
}
}
for(int i=0;i<len;i++)
if(memory_price<p[i])
ran++;
cout<<ran+1<<endl;
}
}
return 0;
}