#include <bits/stdc++.h>
using namespace std;
int T;
int n, m;
int b[101][101];
int w[10001][7];
int tot;
inline void change(int ax, int ay, int bx, int by, int cx, int cy) {
  b[ax][ay] ^= 1;
  b[bx][by] ^= 1;
  b[cx][cy] ^= 1;
  w[++tot][1] = ax;
  w[tot][2] = ay;
  w[tot][3] = bx;
  w[tot][4] = by;
  w[tot][5] = cx;
  w[tot][6] = cy;
  return;
}
inline bool check1(int x, int y) {
  if (b[x][y]) {
    return 1;
  } else {
    return 0;
  }
}
inline bool check2(int ax, int ay, int bx, int by) {
  if (b[ax][ay] && b[bx][by]) {
    return 1;
  } else {
    return 0;
  }
}
inline bool check3(int ax, int ay, int bx, int by, int cx, int cy) {
  if (b[ax][ay] && b[bx][by] && b[cx][cy]) {
    return 1;
  } else {
    return 0;
  }
}
inline void solve(int i, int j) {
  if (check3(i - 1, j - 1, i - 1, j, i, j - 1)) {
    change(i - 1, j - 1, i - 1, j, i, j - 1);
  }
  if (check3(i - 1, j - 1, i - 1, j, i, j)) {
    change(i - 1, j - 1, i - 1, j, i, j);
  }
  if (check3(i - 1, j - 1, i, j - 1, i, j)) {
    change(i - 1, j - 1, i, j - 1, i, j);
  }
  if (check3(i - 1, j, i, j - 1, i, j)) {
    change(i - 1, j, i, j - 1, i, j);
  }
  if (check2(i - 1, j - 1, i - 1, j)) {
    change(i - 1, j - 1, i, j - 1, i, j);
    change(i - 1, j, i, j - 1, i, j);
  }
  if (check2(i - 1, j - 1, i, j - 1)) {
    change(i - 1, j - 1, i - 1, j, i, j);
    change(i, j - 1, i - 1, j, i, j);
  }
  if (check2(i, j, i - 1, j)) {
    change(i, j, i, j - 1, i - 1, j - 1);
    change(i - 1, j, i, j - 1, i - 1, j - 1);
  }
  if (check2(i, j, i, j - 1)) {
    change(i, j, i - 1, j, i - 1, j - 1);
    change(i, j - 1, i - 1, j, i - 1, j - 1);
  }
  if (check2(i, j, i - 1, j - 1)) {
    change(i, j, i - 1, j - 1, i, j - 1);
  }
  if (check2(i - 1, j, i, j - 1)) {
    change(i - 1, j, i, j - 1, i, j);
  }
  if (check1(i, j)) {
    change(i, j, i - 1, j - 1, i - 1, j);
    change(i, j, i - 1, j - 1, i, j - 1);
    change(i, j, i - 1, j, i, j - 1);
  }
  if (check1(i - 1, j)) {
    change(i, j, i - 1, j - 1, i - 1, j);
    change(i, j, i - 1, j, i, j - 1);
    change(i - 1, j - 1, i - 1, j, i, j - 1);
  }
  if (check1(i, j - 1)) {
    change(i, j, i - 1, j - 1, i, j - 1);
    change(i, j, i - 1, j, i, j - 1);
    change(i - 1, j - 1, i - 1, j, i, j - 1);
  }
  if (check1(i - 1, j - 1)) {
    change(i, j, i - 1, j - 1, i - 1, j);
    change(i, j, i - 1, j - 1, i, j - 1);
    change(i - 1, j - 1, i - 1, j, i, j - 1);
  }
}
int main() {
  cin >> T;
  for (int t = 1; t <= T; t++) {
    cin >> n >> m;
    tot = 0;
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        scanf("%1d", &b[i][j]);
      }
    }
    int limitn = n - n % 2;
    int limitm = m - m % 2;
    if (n % 2) {
      if (b[n][1]) {
        change(n, 1, n - 1, 1, n - 1, 2);
      }
      for (int i = 2; i <= m; i++) {
        if (b[n][i]) {
          change(n, i, n - 1, i, n - 1, i - 1);
        }
      }
    }
    if (m % 2) {
      if (b[1][m]) {
        change(1, m, 1, m - 1, 2, m - 1);
      }
      for (int i = 2; i <= n; i++) {
        if (b[i][m]) {
          change(i, m, i, m - 1, i - 1, m - 1);
        }
      }
    }
    for (int i = 2; i <= limitn; i += 2) {
      for (int j = 2; j <= limitm; j += 2) {
        solve(i, j);
      }
    }
    cout << tot << endl;
    for (int i = 1; i <= tot; i++) {
      for (int j = 1; j <= 6; j++) {
        cout << w[i][j] << " ";
      }
      cout << endl;
    }
  }
  return 0;
}
