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

int m,n,g;
int card[7][2]; // ??°???????????°

int calc( int cnt , int N ){
	if( N < 0 ) return 0;
	if( N == 0 ) return 1;
	
	if( cnt == m-1 ){
		if( N%card[cnt][0] == 0 && N/card[cnt][0] <= card[cnt][1] ) return 1;
		else return 0;
	}
	
	int ans = 0 ;
	for( int i=0 ; i<=card[cnt][1] ; i++ ){
		ans += calc( cnt+1 , N - (i*card[cnt][0]) ) ;
	}
	
	return ans ;
}

int main(){
	
	while( cin >> m , m ){
		for( int i=0 ; i<m ; i++ ){
			cin >> card[i][0] >> card[i][1];
		}
		for( int i=0 ; i<m ; i++ ){
			for( int j=i+1 ; j<m ; j++ ){
				if( card[i][0] < card[j][0] ){
					swap( card[i] , card[j] ) ;
				}
			}
		}
		
		cin >> g ;
		while( g-- ){
			cin >> n ;
			cout << calc(0,n) << endl ;
		}
	}
	
	return 0;
}