#include<stdio.h>
 int n,A[20];
  
 int func(int,int );
 int main()
 {
   int m[200],q,i,result[200];

     scanf("%d",&n);
   for(i = 0 ; i < n ; i++)scanf("%d",&A[i]);
   
   scanf("%d",&q);
   for(i = 0 ; i<q; i++)scanf("%d",&m[i]);
   
   //printf("\n");
   for(i = 0 ; i<q ; i++)
     {
       result[i] = func(0,m[i]);
       if(result[i] == 0) printf("no\n");
       else printf("yes\n");
     }
 }


int func(int i, int m)
{
  //printf("i = %d , m = %d\n",i,m);
  if(m == 0) return 1;//mからAの要素を繰返し引いていき、mの値が0になったばあい、Aの要素を足し合せてmを作ることができるから1(true)を返す
  if( i  >= n) return 0;//再帰の回数がn回以上になったら、Aの要素を足し合せてmを作れないということなので0(false)を返す
  
  int result = func(i+1,m) || func(i+1,m-A[i]);//関数の戻値が0,1でも1,0でも1,1でも func(i+1,m) || func(i+1,m-A[i])の結果は1
  //これは、res = func(1+i,m) + func(i+1,m-A[i]) ,if(res == 2) res = 1 でも同じ。
  
  return result;
  

}

