#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n,ans,m;
struct P{
	int x,y;
};
P tab[10000];
int comp(const P &a,const P &b){
	return a.x<b.x;
}
void rec(int now,int sum){
	if(sum==n){
		ans++;
		return ;
	}
	if(now==m)
	return ;
	for(int i=0;i<=tab[now].y&&sum+tab[now].x*i<=n;i++){
		rec(now+1,sum+tab[now].x*i);
	}
}
void solve(){
	rec(0,0);
}
int main(){
	int g,s,t;
	while(cin>>m,m){
		for(int i=0;i<m;i++){
			cin>>s>>t;
			tab[i].x=s;
			tab[i].y=t;
		}
		sort(tab,tab+m,comp);
		cin>>g;
		while(g-->0){
			ans=0;
			cin>>n;
			solve();
			cout<<ans<<endl;
		}
	}
	return 0;
}