#include<bits/stdc++.h>
using namespace std;
long long t;
long long m,n;
bool Pd[110000];
long long a[110000];
long long b[110000];
long long read(){
long long r=0;
char c=getchar();
while(c<'0'||c>'9'){
c=getchar();
}
while(c>='0'&&c<='9'){
r=(r<<3)+(r<<1)+c-'0';
c=getchar();
}
return r;
}
bool pd(long long x){
for(long long i=2;i*i<=x;i++){
if(x%i==0){
return true;
}
}
return false;
}
int main(){
t=read();
while(t--){
memset(Pd,0,sizeof(Pd));
n=read(),m=read();
for(int i=1;i<=n;i++){
a[i]=read();
}
for(int i=1;i<=m;i++){
b[i]=read();
}
sort(a+1,a+1+n);
sort(b+1,b+1+m);
bool flag=0;
long long cnt=0;
long long head1=1,head2=1;
while(a[head1]==1){
head1++;
}
while(b[head2]==1){
head2++;
}
while(head2<=m){
while(a[head1]!=b[head2]){
head1++;
}
while(a[head1]==b[head2]){
Pd[head1]=1;
head1++,head2++;
}
}
for(long long i=1;i<=n;i++){
if(Pd[i]==0&&a[i]!=1){
cnt++;
if(cnt>=2){
flag=1;
break;
}
if(pd(a[i])){
flag=1;
break;
}
}
}
if(flag==1){
cout<<"NO"<<endl;
}
else{
cout<<"YES"<<endl;
}
}
return 0;
}