#include<set>
#include<iostream>

using namespace std;

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

      int value[10001];
      for(int i=0;i<10001;i++)
	value[i] = 0;

      set<int> index;
      index.insert(0);
      value[0] = 1;

      for(int i=0;i<m;i++)
	{
	  int a,b;
	  cin >> a >> b;
	  set<int> next = index;
	  int next_vakue[10000];
	  for(int i=0;i<10001;i++)
	    next_vakue[i] = value[i];
	  for(set<int>::iterator it = index.begin();it != index.end();it++)
	    for(int j=1;j<=b;j++)
	      {
		if(next.find((*it)+j*a) == next.end())
		  next.insert((*it)+j*a);
		value[(*it)+j*a]+=next_vakue[(*it)];
	      }		

	  
	  index = next;
	}

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

    }
  return 0;
}