#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
using namespace std;
int t,n,m,nm;
ll a[100010],b[100010];
ll qa,aq;
ull aa=1,bb=1;
bool sk(ull x)
{
if(x==1||x==9)return false;
if(x&1==0)return false;
for(int i=3;i*i<x;i+=2)
{
if(x%i==0)return false;
}
return true;
}
int main() {
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
if(n==0){printf("NO\n");continue;}
if(m==0)
{
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
if(a[i]!=1){qa++;aq=a[i];}
}
if(qa>1||sk((ull)aq)==0) printf("NO\n");
else printf("YES\n");
continue;
}
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
for(int i=1;i<=m;i++)scanf("%lld",&b[i]);
sort(a+1,a+1+n);sort(b+1,b+1+m);
for(int i=1;i<=n;i++)
{
aa*=a[i];
if(b[i]!=0)bb*=b[i];
if(aa%bb==0)
{
aa=aa/bb;
bb=1;
}
}
for(int i=n+1;i<=m;i++)
{
bb*=b[i];
if(aa%bb==0)
{
aa=aa/bb;
bb=1;
}
}
if(bb!=1){printf("NO\n");continue;}
if(sk(aa)){printf("YES\n");continue;}
printf("NO\n");continue;
}
return 0;
}