//Sumy
//X OI
#include <cstdio>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
const int N = 5001;
const int A = 50000;
const int INF = 2000000000;
int n,m;
int a[N],min_reszta[A],d[A];
vector<pair<int,int> > kraw;
struct cmp 
{
  bool operator()(int a, int b)
  {
    if (d[a]!=d[b]) return d[a]<d[b];
    return a<b;
  }
};
void dijkstra(int x)
{
  int c,y;
  for (int i=1;i<=a[1]-1;i++) d[i] = INF;
  d[0] = 0;
  set<int,cmp> S;
  S.insert(x);
  while (!S.empty())
  {
    x = *S.begin();
    S.erase(S.begin());
    for (int i=0;i<kraw.size();i++)
    {
      y = (kraw[i].first+x)%a[1];
      c = kraw[i].second;
      if (d[x]+c < d[y])
      {
	S.erase(y);
	d[y] = d[x]+c;
	S.insert(y);
      }
    }
  }
}
int main()
{
  scanf("%d",&n);
  scanf("%d",&a[1]);
  for (int i=1;i<=a[1]-1;i++)
    min_reszta[i] = INF;
  min_reszta[0] = 0;
  for (int i=2;i<=n;i++)
  {
    scanf("%d",&a[i]);
    min_reszta[a[i]%a[1]] = min(min_reszta[a[i]%a[1]], a[i]);
  }
  
  for (int i=1;i<=a[1]-1;i++)
  {
    if (min_reszta[i] != INF)
      kraw.push_back(make_pair(i,min_reszta[i]));
  }
  dijkstra(0);
  scanf("%d",&m);
  for (int i=0;i<m;i++)
  {
    int x;
    scanf("%d",&x);
    printf("%s\n",(x >= d[x%a[1]])?"TAK":"NIE");
  }
  return 0;
}