#include <bits/stdc++.h>
using namespace std;
const int N = 2000009;
int n, m, id[109][109], tot, b[109][109], cnt;
struct Point {
  int x, y;
} a[N], ans[N];
void add(int x, int y) {
  ans[++cnt] = a[id[x][y]];
  b[x][y] ^= 1;
}
void Modify(int x, int y, int type) {
  if (type == 1) add(x, y), add(x + 1, y), add(x, y + 1);
  if (type == 2) add(x, y), add(x + 1, y), add(x, y - 1);
  if (type == 3) add(x, y), add(x - 1, y), add(x, y - 1);
  if (type == 4) add(x, y), add(x, y + 1), add(x - 1, y);
}
void init() {
  scanf("%d %d", &n, &m);
  tot = cnt = 0;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
      scanf("%1d", &b[i][j]), id[i][j] = ++tot, a[tot].x = i, a[tot].y = j;
}
void work() {
  if ((n & 1) && (m & 1) && b[n][m]) Modify(n, m, 3);
  if (n & 1) {
    if (b[n][1]) Modify(n, 1, 4);
    for (int i = 2; i <= m; i++)
      if (b[n][i]) Modify(n - 1, i, 2);
  }
  if (m & 1) {
    if (b[1][m]) Modify(1, m, 2);
    for (int i = 2; i <= n; i++)
      if (b[i][m]) Modify(i, m - 1, 4);
  }
  if (n & 1) n--;
  if (m & 1) m--;
  for (int i = 1; i <= n; i += 2)
    for (int j = 1; j <= m; j += 2) {
      int A = b[i][j], B = b[i][j + 1], C = b[i + 1][j + 1], D = b[i + 1][j];
      if (A == 0 && B == 0 && C == 0 && D == 0) continue;
      if (A == 1 && B == 0 && C == 0 && D == 0)
        Modify(i, j, 1), Modify(i + 1, j, 4), Modify(i, j + 1, 2);
      if (A == 0 && B == 1 && C == 0 && D == 0)
        Modify(i, j, 1), Modify(i + 1, j + 1, 3), Modify(i, j + 1, 2);
      if (A == 1 && B == 1 && C == 0 && D == 0)
        Modify(i + 1, j, 4), Modify(i + 1, j + 1, 3);
      if (A == 0 && B == 0 && C == 1 && D == 0)
        Modify(i + 1, j, 4), Modify(i + 1, j + 1, 3), Modify(i, j + 1, 2);
      if (A == 1 && B == 0 && C == 1 && D == 0)
        Modify(i, j, 1), Modify(i + 1, j + 1, 3);
      if (A == 0 && B == 1 && C == 1 && D == 0)
        Modify(i, j, 1), Modify(i + 1, j, 4);
      if (A == 1 && B == 1 && C == 1 && D == 0) Modify(i, j + 1, 2);
      if (A == 0 && B == 0 && C == 0 && D == 1)
        Modify(i, j, 1), Modify(i + 1, j + 1, 3), Modify(i + 1, j, 4);
      if (A == 1 && B == 0 && C == 0 && D == 1)
        Modify(i + 1, j + 1, 3), Modify(i, j + 1, 2);
      if (A == 0 && B == 1 && C == 0 && D == 1)
        Modify(i + 1, j, 4), Modify(i, j + 1, 2);
      if (A == 1 && B == 1 && C == 0 && D == 1) Modify(i, j, 1);
      if (A == 0 && B == 0 && C == 1 && D == 1)
        Modify(i, j, 1), Modify(i, j + 1, 2);
      if (A == 1 && B == 0 && C == 1 && D == 1) Modify(i + 1, j, 4);
      if (A == 0 && B == 1 && C == 1 && D == 1) Modify(i + 1, j + 1, 3);
      if (A == 1 && B == 1 && C == 1 && D == 1)
        Modify(i, j, 1), Modify(i + 1, j, 4), Modify(i, j + 1, 2),
            Modify(i + 1, j + 1, 3);
    }
  printf("%d\n", cnt / 3);
  for (int i = 1; i <= cnt; i += 3)
    printf("%d %d %d %d %d %d\n", ans[i].x, ans[i].y, ans[i + 1].x,
           ans[i + 1].y, ans[i + 2].x, ans[i + 2].y);
}
int main() {
  int T;
  scanf("%d", &T);
  while (T--) init(), work();
  return 0;
}
