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

int n,m;
int a[8],b[8];
int dp[8][1001];

void solve(void){
	memset(dp,0,sizeof(dp));
	dp[0][0] = 1;
	for(int i=0;i<n;i++){
		for(int j=0;j<=1000;j++) if(dp[i][j]>0) {
			for(int k=0;k<=b[i] && j+k*a[i]<=1000;k++){
				dp[i+1][j+a[i]*k] += dp[i][j];
			}
		}
	}
}

int main(void){
	while(cin>>n,n){
		for(int i=0;i<n;i++){
			cin>>a[i]>>b[i];
		}

		solve(); //DPツ表ツ青カツ青ャ

		cin>>m;
		for(int i=0;i<m;i++){
			int g;
			cin>>g;
			cout<<dp[n][g]<<endl;
		}
	}

	return 0;
}