#include<bits/stdc++.h>
using namespace std;
int T,n;
const int N=35;
bitset<N>B[N],St,Ed;
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
St.reset(),Ed.reset();
for(int i=1;i<=n;i++)B[i].reset();
for(int i=1,x;i<=n;i++)
{
scanf("%d",&x);
St[i]=x;
B[i][i]=1;
}
for(int i=1,x;i<=n;i++)
{
scanf("%d",&x);
Ed[i]=x;
}
Ed^=St;
while(1)
{
int x,y;
scanf("%d%d",&x,&y);
if(x==0&&y==0)break;
B[y][x]=1;
}
int Res=0;
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(B[j][i])
{
swap(B[j],B[i]);
break;
}
}
if(!B[i][i])Res++;
for(int j=1;j<=n;j++)
{
if(j==i)continue;
if(B[j][i])B[j]^=B[i],Ed[j]=Ed[j]^Ed[i];
}
}
int Flg=0;
for(int i=1;i<=n;i++)
{
if(!B[i].count()&&Ed[i])
{
Flg=1;
break;
}
}
if(Flg)puts("Oh,it's impossible~!!");
else cout<<(1<<Res)<<endl;
}
}