// 2011/11/02 Tazoe

#include <iostream>
using namespace std;

int main()
{
	while(true){
		int m;
		cin >> m;
		if(m==0)
			break;

		int DP[8][1001];
		DP[0][0] = 1;
		for(int j=1; j<=1000; j++)
			DP[0][j] = 0;

		for(int i=1; i<=m; i++){
			for(int j=0; j<=1000; j++)
				DP[i][j] = DP[i-1][j];

			int a, b;
			cin >> a >> b;

			for(int j=0; j<=1000; j++){
				if(DP[i-1][j]==0)
					continue;

				for(int k=1; k<=b; k++){
					if(j+a*k>1000)
						break;

					DP[i][j+a*k] += DP[i-1][j];
				}
			}
		}

		int g;
		cin >> g;

		for(int i=0; i<g; i++){
			int n;
			cin >> n;

			cout << DP[m][n] << endl;
		}
	}

	return 0;
}