/* Jozef Tvarozek - Roots */
#include <stdio.h>

int k,p;
int b[50],nb;
int plist[1000];
int npl;

int akmodp(int a,int prime)
{
  int i,d=1;
  for ( i = nb-1; i >= 0; i--)
  {
    d = (d*d)%prime;
    if ( b[i] )
      d = (d*a)%prime;
  }
//  printf("(%d^%d)mod%d = %d\n",a,k,prime,d);
//  getchar();
  return d;
}
int witness(int x)
{
  int i;
//  printf("witness:%d",p);
  for (i = 0; i < p; i++)
  {
  if ( akmodp(i,p) == x )
    {
//      printf(":OK\n");
      return 1;
    }
//    printf("%d,",akmodp(i,p));
//    getchar();
  }

//  printf(":not found\n");
///  getchar();
  return 0;
}

int solve(int x,int prime)
{
  int i,j;
  p = prime;
  if ( p <= 2000 )
    return witness(x);
  else
  {
    p = 997; j = witness(x%p);
    p = 97; j += witness(x%p);
    for (i = 2; i < 20; i++)
    {
      p = 2+rand()%500;
      j += witness(x%p);
    }

    if ( j >= 18 )
      return 1;
/*
    for (j = 0, i = 0; i < npl; i++)
    {
      p = plist[i];
      j += witness(x%p);
    }
    if ( j == npl )
      return 1;

    for (j = 0, i = 2; i < 1000; i++)
    {
      p = i;
      j += witness(x%p);
    }
    if ( j == 998 )
      return 1;
*/
//    printf("no:%d\n",j);
    return 0;
  }
}

int main(void)
{
  FILE *fin,*fout;
  int i,j,ncase,icase,pr;

  fin = fopen("roo.in","rt");
  fout = fopen("roo.out","wt");

  fscanf(fin,"%d %d",&pr,&k);

  j = k;
  while ( j )
  {
    b[nb++] = j%2;
    j /= 2;
  }
 /* for (i = 2; i < 1000; i++)
  {
    for (j = 2; j < i; j++)
      if ( i % j == 0 )
        break;
    if ( i == j )
      plist[npl++] = i;
  }
  */
  fscanf(fin,"%d",&ncase);
  for (icase = 0; icase < ncase; icase++)
  {
    fscanf(fin,"%d",&j);
    if ( solve(j%pr,pr) )
    {
      fprintf(fout,"YES\n");
   //   printf("YES\n");
    }
    else
    {
      fprintf(fout,"NO\n");
   //   printf("NO\n");
    }
//    getchar();
  }
  return 0;
}
