/*
 * 0154.cpp
 *
 *  Created on: 2011/07/27
 *      Author: isa
 */

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

int main(void){
	int m,g,tmp;

	while(cin >> m && m){
		int c[m],n[m],dp[8][1001];

		for(int i=0;i<m;i++){
			cin >> c[i] >> n[i];
		}
		memset(dp,0,sizeof(dp));
		dp[0][0] = 1;
		for(int i=0;i<m;i++){
			for(int j=0;j<=1000;j++){
				for(int k=0;k<=n[i];k++){
					if(j+k*c[i] > 1000) break;
					dp[i+1][j+k*c[i]] += dp[i][j];
				}
			}
		}
		cin >> g;
		for(int i=0;i<g;i++){
			cin >> tmp;
			cout << dp[m][tmp] << endl;
		}
	}
}