#include <bits/stdc++.h>
using namespace std;
int board[110][110];
int ans[10101][6];
int main() {
  int tc;
  scanf("%d", &tc);
  for (int t = 0; t < tc; t++) {
    int n, k;
    scanf("%d %d\n", &n, &k);
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= k; j++) {
        char x;
        scanf("%c", &x);
        if (x == '1')
          board[i][j] = 1;
        else
          board[i][j] = 0;
      }
      char x;
      scanf("%c", &x);
    }
    int cnt = 0;
    for (int i = 1; i < n - 1; i++) {
      for (int j = 1; j < k - 1; j++) {
        if (board[i][j] == 1) {
          cnt++;
          ans[cnt][0] = i;
          ans[cnt][1] = j;
          ans[cnt][2] = i;
          ans[cnt][3] = j + 1;
          ans[cnt][4] = i + 1;
          ans[cnt][5] = j + 1;
          board[i][j] ^= 1;
          board[i][j + 1] ^= 1;
          board[i + 1][j + 1] ^= 1;
        }
      }
      int hp = board[i][k - 1] * 2 + board[i][k];
      if (hp == 1) {
        cnt++;
        ans[cnt][0] = i;
        ans[cnt][1] = k;
        ans[cnt][2] = i + 1;
        ans[cnt][3] = k - 1;
        ans[cnt][4] = i + 1;
        ans[cnt][5] = k;
        board[i][k] ^= 1;
        board[i + 1][k - 1] ^= 1;
        board[i + 1][k] ^= 1;
      } else if (hp == 2) {
        cnt++;
        ans[cnt][0] = i;
        ans[cnt][1] = k - 1;
        ans[cnt][2] = i + 1;
        ans[cnt][3] = k - 1;
        ans[cnt][4] = i + 1;
        ans[cnt][5] = k;
        board[i][k - 1] ^= 1;
        board[i + 1][k - 1] ^= 1;
        board[i + 1][k] ^= 1;
      } else if (hp == 3) {
        cnt++;
        ans[cnt][0] = i;
        ans[cnt][1] = k - 1;
        ans[cnt][2] = i;
        ans[cnt][3] = k;
        ans[cnt][4] = i + 1;
        ans[cnt][5] = k;
        board[i][k - 1] ^= 1;
        board[i][k] ^= 1;
        board[i + 1][k] ^= 1;
      }
    }
    for (int j = 1; j < k - 1; j++) {
      int hp = board[n - 1][j] * 2 + board[n][j];
      if (hp == 1) {
        cnt++;
        ans[cnt][0] = n;
        ans[cnt][1] = j;
        ans[cnt][2] = n - 1;
        ans[cnt][3] = j + 1;
        ans[cnt][4] = n;
        ans[cnt][5] = j + 1;
        board[n][j] ^= 1;
        board[n - 1][j + 1] ^= 1;
        board[n][j + 1] ^= 1;
      } else if (hp == 2) {
        cnt++;
        ans[cnt][0] = n - 1;
        ans[cnt][1] = j;
        ans[cnt][2] = n - 1;
        ans[cnt][3] = j + 1;
        ans[cnt][4] = n;
        ans[cnt][5] = j + 1;
        board[n - 1][j] ^= 1;
        board[n - 1][j + 1] ^= 1;
        board[n][j + 1] ^= 1;
      } else if (hp == 3) {
        cnt++;
        ans[cnt][0] = n - 1;
        ans[cnt][1] = j;
        ans[cnt][2] = n;
        ans[cnt][3] = j;
        ans[cnt][4] = n;
        ans[cnt][5] = j + 1;
        board[n - 1][j] ^= 1;
        board[n][j] ^= 1;
        board[n][j + 1] ^= 1;
      }
    }
    int hp = board[n - 1][k - 1] * 8 + board[n - 1][k] * 4 +
             board[n][k - 1] * 2 + board[n][k];
    int cnt2 = 0;
    if (hp == 14 || hp == 13 || hp == 11 || hp == 7) {
      if (hp == 14) {
        cnt++;
        cnt2++;
        ans[cnt][0] = n - 1;
        ans[cnt][1] = k - 1;
        ans[cnt][2] = n - 1;
        ans[cnt][3] = k;
        ans[cnt][4] = n;
        ans[cnt][5] = k - 1;
      }
      if (hp == 13) {
        cnt++;
        cnt2++;
        ans[cnt][0] = n - 1;
        ans[cnt][1] = k - 1;
        ans[cnt][2] = n - 1;
        ans[cnt][3] = k;
        ans[cnt][4] = n;
        ans[cnt][5] = k;
      }
      if (hp == 11) {
        cnt++;
        cnt2++;
        ans[cnt][0] = n - 1;
        ans[cnt][1] = k - 1;
        ans[cnt][2] = n;
        ans[cnt][3] = k;
        ans[cnt][4] = n;
        ans[cnt][5] = k - 1;
      }
      if (hp == 7) {
        cnt++;
        cnt2++;
        ans[cnt][0] = n;
        ans[cnt][1] = k;
        ans[cnt][2] = n - 1;
        ans[cnt][3] = k;
        ans[cnt][4] = n;
        ans[cnt][5] = k - 1;
      }
    } else {
      if (hp == 1 || hp == 2 || hp == 4 || hp == 8) {
        hp = 15 - hp;
        cnt2++;
      }
      if ((hp & 1) == 1) {
        cnt++;
        cnt2++;
        ans[cnt][0] = n - 1;
        ans[cnt][1] = k - 1;
        ans[cnt][2] = n - 1;
        ans[cnt][3] = k;
        ans[cnt][4] = n;
        ans[cnt][5] = k - 1;
      }
      if ((hp & 2) == 2) {
        cnt++;
        cnt2++;
        ans[cnt][0] = n - 1;
        ans[cnt][1] = k - 1;
        ans[cnt][2] = n - 1;
        ans[cnt][3] = k;
        ans[cnt][4] = n;
        ans[cnt][5] = k;
      }
      if ((hp & 4) == 4) {
        cnt++;
        cnt2++;
        ans[cnt][0] = n - 1;
        ans[cnt][1] = k - 1;
        ans[cnt][2] = n;
        ans[cnt][3] = k;
        ans[cnt][4] = n;
        ans[cnt][5] = k - 1;
      }
      if ((hp & 8) == 8) {
        cnt++;
        cnt2++;
        ans[cnt][0] = n;
        ans[cnt][1] = k;
        ans[cnt][2] = n - 1;
        ans[cnt][3] = k;
        ans[cnt][4] = n;
        ans[cnt][5] = k - 1;
      }
      if (cnt2 % 2 == 1) {
        cnt++;
        ans[cnt][0] = n - 1;
        ans[cnt][1] = k - 1;
        ans[cnt][2] = n - 1;
        ans[cnt][3] = k;
        ans[cnt][4] = n;
        ans[cnt][5] = k - 1;
        cnt++;
        ans[cnt][0] = n - 1;
        ans[cnt][1] = k - 1;
        ans[cnt][2] = n - 1;
        ans[cnt][3] = k;
        ans[cnt][4] = n;
        ans[cnt][5] = k;
        cnt++;
        ans[cnt][0] = n - 1;
        ans[cnt][1] = k - 1;
        ans[cnt][2] = n;
        ans[cnt][3] = k;
        ans[cnt][4] = n;
        ans[cnt][5] = k - 1;
        cnt++;
        ans[cnt][0] = n;
        ans[cnt][1] = k;
        ans[cnt][2] = n - 1;
        ans[cnt][3] = k;
        ans[cnt][4] = n;
        ans[cnt][5] = k - 1;
      }
    }
    printf("%d\n", cnt);
    for (int i = 1; i <= cnt; i++) {
      printf("%d %d %d %d %d %d\n", ans[i][0], ans[i][1], ans[i][2], ans[i][3],
             ans[i][4], ans[i][5]);
    }
  }
}
