#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ul = unsigned long long;
using ld = long double;
const int N = 101;
int a[N][N];
vector<vector<int>> ans;
void q(int ax, int ay, int bx, int by, int cx, int cy) {
  a[ax][ay] ^= 1;
  a[bx][by] ^= 1;
  a[cx][cy] ^= 1;
  ans.push_back({ax, ay, bx, by, cx, cy});
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int t, n, m;
  cin >> t;
  for (int z = 0; z < (t); z++) {
    cin >> n >> m;
    string s;
    for (int i = 0; i < (n); i++) {
      cin >> s;
      for (int j = 0; j < (m); j++) a[i][j] = s[j] - '0';
    }
    ans.clear();
    for (int i = 0; i < (n - 2); i++)
      for (int j = 0; j < (m); j++) {
        if (a[i][j]) q(i, j, i + 1, j, i + 1, j + (j == 0 ? 1 : -1));
      }
    for (int i = 0; i < (m - 2); i++) {
      if (a[n - 2][i] && a[n - 1][i])
        q(n - 2, i, n - 1, i, n - 2, i + 1);
      else if (a[n - 2][i])
        q(n - 2, i, n - 2, i + 1, n - 1, i + 1);
      else if (a[n - 1][i])
        q(n - 1, i, n - 1, i + 1, n - 2, i + 1);
    }
    int ss = 0;
    for (int i = 0; i < (2); i++)
      for (int j = 0; j < (2); j++) ss ^= a[n - 2 + i][m - 2 + j];
    for (int i = 0; i < (2); i++) {
      for (int j = 0; j < (2); j++) {
        if (a[n - 2 + i][m - 2 + j] == ss) continue;
        vector<int> cv;
        for (int i1 = 0; i1 < (2); i1++)
          for (int j1 = 0; j1 < (2); j1++)
            if (i1 != i || j1 != j) {
              cv.push_back(n - 2 + i1);
              cv.push_back(m - 2 + j1);
            }
        ans.push_back(cv);
      }
    }
    cout << ans.size() << '\n';
    for (auto &pp : ans) {
      for (int i : pp) cout << i + 1 << ' ';
      cout << '\n';
    }
  }
}
