#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int s[101];
int sg[10001];
int g(int temp , int k)
{
int mex[101],i;
memset(mex,0,sizeof(mex));
if(sg[temp]!=-1) return sg[temp]; //集合S一致,则每个数量的mex一样,所以可以重复利用
if(temp-s[0]<0) return sg[temp]=0; //s[0]为集合中最小值,temp-s[0]<0,则temp不可能到达其他状态,一定为P
for(i=0;i<k && temp-s[i]>=0;i++) //判断条件,因为s[]排了序,当temp-s[i]<0就停止循环。
{
mex[g(temp-s[i] , k)]=1; //temp的后继SG函数中的没有出现的最小非负数
}
for(i=0;;i++) //通过temp的后继SG函数出现的非负数得temp的结果
if(!mex[i]) return sg[temp]=i;
}
int comp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int k,i ;
int n, t ,temp, ans;
// freopen("in.txt","r",stdin);
while(scanf("%d",&k)!=EOF && k)
{
memset(sg,-1,sizeof(sg));
sg[0]=0;
for(i=0;i<k;i++)
scanf("%d",&s[i]);
qsort(s,k,sizeof(int),comp);
scanf("%d",&t);
while(t--)
{
ans=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&temp);
ans^=g(temp , k);
}
if(!ans) printf("L"); //异或sum!=0,说明该点为必败点,只能到达必胜点。
else printf("W");
}
printf("\n");
}
return 0;
}