#include using namespace std; const int INF=2100000000; #define rep(i,a,b) for (int i=(int)(a);i<(int)(b);i++) template bool chmin(T &a,const T &b){if(a>b){a=b;return 1;}else return 0;} void solve(); int main() { int t=1; cin>>t; rep(i,0,t) solve(); } void solve(){ int N,M; cin>>N>>M; vector p(N),q(M); rep(i,0,N) cin>>p[i]; rep(i,0,M) cin>>q[i]; vector> A(N,vector(M)); rep(i,0,N) rep(j,0,M) cin>>A[i][j]; vector X(N),Y(M); Y=A[0]; rep(i,0,N) X[i]=(A[i][0]^Y[0]); rep(i,0,N) rep(j,0,M){ if(A[i][j]^X[i]^Y[j]){ cout<<"-1\n"; return; } } rep(i,0,M) p.push_back(q[i]),X.push_back(Y[i]); map m; map dp; rep(i,0,N+M){ int tmp1=p[i],tmp2=X[i],tmp3=1; tmp1++; while(tmp3=0;d--){ if(tmp1&(1<