#include #include #include using namespace std; const int maxn = 506; int lowbit[maxn]; long long tree[maxn][maxn]; int a[maxn][maxn]; void Init() { for(int i=1;i0;i-=lowbit[i]) for(int j=y;j>0;j-=lowbit[j]) { ret^=tree[i][j]; // printf("%d %d c:%d\n",i,j,tree[i][j]); } return ret; } int main() { Init(); int ncase,n,m,q,i,j,x,x1,y1,x2,y2; long long p1,p2,p3,p4; scanf("%d",&ncase); while(ncase--) { memset(tree,0,sizeof(tree)); scanf("%d%d%d",&n,&m,&q); for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { scanf("%d",&x); a[i][j]=x; update(i,j,x); } } // printf("check:%d\n",query(1,1)); int op; while(q--) { scanf("%d",&op); if(op==1) { scanf("%d%d%d%d",&x1,&y1,&x2,&y2); p1=query(x1-1,y1-1); p2=query(x2,y1-1); p3=query(x1-1,y2); p4=query(x2,y2); // printf("p:%d %d %d %d\n",p1,p2,p3,p4); if((p1^p2^p3^p4)==0) printf("No\n"); else printf("Yes\n"); } else { scanf("%d%d%d",&x1,&y1,&x); update(x1,y1,a[x1][y1]); update(x1,y1,x); a[x1][y1]=x; } } } return 0; }