#include <bits/stdc++.h>
const int N = 105;
int tt, n, m, k, lx[3], ly[3], rx, ry;
char s[N][N];
struct node {
  int a, b, c, d, e, f;
} a[N * N];
inline void add(int x, int y, int c, int d, int e, int f) {
  a[++k] = (node){x, y, c, d, e, f}, s[x][y] ^= 1, s[c][d] ^= 1, s[e][f] ^= 1;
}
inline void d3(int i, int j) {
  if (s[i][j] == 48)
    add(i - 1, j - 1, i, j - 1, i - 1, j);
  else if (s[i][j - 1] == 48)
    add(i - 1, j - 1, i - 1, j, i, j);
  else if (s[i - 1][j] == 48)
    add(i - 1, j - 1, i, j - 1, i, j);
  else
    add(i, j, i - 1, j, i, j - 1);
}
inline void d2(int i, int j) {
  int x = 0, y = 0;
  if (s[i][j] == 48 && x < 2) lx[++x] = i, ly[x] = j;
  if (s[i][j] == 49 && !y) rx = i, ry = j, y++;
  if (s[i - 1][j] == 48 && x < 2) lx[++x] = i - 1, ly[x] = j;
  if (s[i - 1][j] == 49 && !y) rx = i - 1, ry = j, y++;
  if (s[i][j - 1] == 48 && x < 2) lx[++x] = i, ly[x] = j - 1;
  if (s[i][j - 1] == 49 && !y) rx = i, ry = j - 1, y++;
  if (s[i - 1][j - 1] == 48 && x < 2) lx[++x] = i - 1, ly[x] = j - 1;
  if (s[i - 1][j - 1] == 49 && !y) rx = i - 1, ry = j - 1, y++;
  add(lx[1], ly[1], lx[2], ly[2], rx, ry), d3(i, j);
}
inline void d1(int i, int j) {
  int x = 0, y = 0;
  if (s[i][j] == 48 && x < 2) lx[++x] = i, ly[x] = j;
  if (s[i][j] == 49 && !y) rx = i, ry = j, y++;
  if (s[i - 1][j] == 48 && x < 2) lx[++x] = i - 1, ly[x] = j;
  if (s[i - 1][j] == 49 && !y) rx = i - 1, ry = j, y++;
  if (s[i][j - 1] == 48 && x < 2) lx[++x] = i, ly[x] = j - 1;
  if (s[i][j - 1] == 49 && !y) rx = i, ry = j - 1, y++;
  if (s[i - 1][j - 1] == 48 && x < 2) lx[++x] = i - 1, ly[x] = j - 1;
  if (s[i - 1][j - 1] == 49 && !y) rx = i - 1, ry = j - 1, y++;
  add(lx[1], ly[1], lx[2], ly[2], rx, ry), d2(i, j);
}
inline void d4(int i, int j) { add(i, j, i - 1, j, i, j - 1), d1(i, j); }
int main() {
  scanf("%d", &tt);
  int i, j, b;
  while (tt--) {
    scanf("%d%d", &n, &m), k = 0;
    for (i = 1; i <= n; i++) scanf("%s", s[i] + 1);
    if (n & 1) {
      for (j = 2; j <= m; j += 2)
        if (s[n][j] == 49 && s[n][j - 1] == 49)
          add(n, j, n, j - 1, n - 1, j);
        else if (s[n][j] == 49)
          add(n, j, n - 1, j, n - 1, j - 1);
        else if (s[n][j - 1] == 49)
          add(n, j - 1, n - 1, j, n - 1, j - 1);
    }
    if (m & 1) {
      for (i = 2; i <= n; i += 2)
        if (s[i][m] == 49 && s[i - 1][m] == 49)
          add(i, m, i - 1, m, i, m - 1);
        else if (s[i][m] == 49)
          add(i, m, i, m - 1, i - 1, m - 1);
        else if (s[i - 1][m] == 49)
          add(i - 1, m, i, m - 1, i - 1, m - 1);
    }
    if (n & 1 && m & 1 && s[n][m] == 49)
      add(n, m, n - 1, m, n, m - 1), add(n - 1, m - 1, n - 1, m, n, m - 1);
    for (i = 2; i <= n; i += 2)
      for (j = 2; j <= m; j += 2) {
        b = s[i][j] + s[i - 1][j] + s[i][j - 1] + s[i - 1][j - 1];
        if (b == 193) d1(i, j);
        if (b == 194) d2(i, j);
        if (b == 195) d3(i, j);
        if (b == 196) d4(i, j);
      }
    for (printf("%d\n", k), i = 1; i <= k; i++)
      printf("%d %d %d %d %d %d\n", a[i].a, a[i].b, a[i].c, a[i].d, a[i].e,
             a[i].f);
  }
  return 0;
}
