#include<iostream>
#include<cstring>
using namespace std;

long long int dp[1001];
int a[8],b[8];
int main(void){
	int n,g;
	while(1){
		memset(dp,0,sizeof(dp));
		scanf("%d",&n);
		if(n==0)break;
		for(int i=0;i<n;i++){
			scanf("%d%d",&a[i],&b[i]);
		}
		dp[0]=1;
		for(int i=0;i<n;i++){
			for(int j=1000;j>=0;j--){
				for(int k=1;k<=b[i];k++){
					if(a[i]*k<=j){
						dp[j]+=dp[j-a[i]*k];
					}
				}
			}
		}
		scanf("%d",&g);
		for(int i=0;i<g;i++){
			int a;
			scanf("%d",&a);
			printf("%d\n",dp[a]);
		}
	}
    return 0;
}