#include #include using namespace std; const int MAXN = 510; int n, m; int sum[MAXN][MAXN], a[MAXN][MAXN]; inline int Lowbit(int x) { return x & (-x); } int Query(int x, int y) { int ans = 0; while (x > 0) { int ty = y; while (ty > 0) { ans ^= sum[x][ty]; ty -= Lowbit(ty); } x -= Lowbit(x); } return ans; } void Change(int x, int y, int v) { while (x <= n) { int ty = y; while (ty <= m) { sum[x][ty] ^= v; ty += Lowbit(ty); } x += Lowbit(x); } } int main() { int T; scanf("%d", &T); while (T--) { memset(sum, 0, sizeof(sum)); int q; scanf("%d%d%d", &n, &m, &q); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { scanf("%d", &a[i][j]); Change(i, j, a[i][j]); } } for (int i = 0; i < q; i++) { int opt; scanf("%d", &opt); if (opt == 1) { int x1, y1, x2, y2; scanf("%d%d%d%d", &x1, &y1, &x2, &y2); int ans = Query(x1 - 1, y1 - 1) ^ Query(x1 - 1, y2) ^ Query(x2, y1 - 1) ^ Query(x2, y2); if (ans == 0) printf("No\n"); else printf("Yes\n"); } else if (opt == 2) { int x, y, v; scanf("%d%d%d", &x, &y, &v); Change(x, y, v ^ a[x][y]); a[x][y] = v; } } } return 0; }