#include<bits/stdc++.h>
using namespace std;
int n;
int y;
int num[50];
int numnum[50];
int dfs(int x,int sum);
int mem[50][15000];
main(){
  while(1){
    cin>>n;
    if(n==0)break;
    int cnt=0;
    int g;
    for(int i=0;i<n;i++){
      cin>>num[i]>>numnum[i];
    }
    cin>>g;
    for(int i=0;i<g;i++){
      memset(mem,-1,sizeof(mem));
      cin>>y;
      cnt=dfs(0,0);
      cout<<cnt<<endl;
    }
  }
}
int dfs(int x,int sum){
  if(sum==y){
    return 1;
  }
  if(x==n&&sum!=y){
    return 0;
  }
  if(mem[x][sum]!=-1){
    return mem[x][sum];
  }
  else{
    int cnt=0;
    for(int i=0;i<=numnum[x];i++){
      cnt+=dfs(x+1,sum+num[x]*i);
    }
    return mem[x][sum]=cnt;
  }
}