#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
char a[105][105];
int x[10005][4], y[10005][4];
int cnt;
vector<pair<int, int> > q, p;
void f(int xx, int yy) {
  q.clear();
  p.clear();
  if (a[xx - 1][yy - 1] == '1')
    q.push_back({xx - 1, yy - 1});
  else
    p.push_back({xx - 1, yy - 1});
  if (a[xx - 1][yy] == '1')
    q.push_back({xx - 1, yy});
  else
    p.push_back({xx - 1, yy});
  if (a[xx][yy - 1] == '1')
    q.push_back({xx, yy - 1});
  else
    p.push_back({xx, yy - 1});
  if (a[xx][yy] == '1')
    q.push_back({xx, yy});
  else
    p.push_back({xx, yy});
  if (q.size() == 0) return;
  if (q.size() == 1) {
    x[++cnt][1] = q[0].first, y[cnt][1] = q[0].second;
    x[cnt][2] = p[0].first, y[cnt][2] = p[0].second;
    x[cnt][3] = p[1].first, y[cnt][3] = p[1].second;
    a[x[cnt][1]][y[cnt][1]] = '0' + '1' - a[x[cnt][1]][y[cnt][1]];
    a[x[cnt][2]][y[cnt][2]] = '0' + '1' - a[x[cnt][2]][y[cnt][2]];
    a[x[cnt][3]][y[cnt][3]] = '0' + '1' - a[x[cnt][3]][y[cnt][3]];
    f(xx, yy);
    return;
  }
  if (q.size() == 2) {
    x[++cnt][1] = q[0].first, y[cnt][1] = q[0].second;
    x[cnt][2] = p[1].first, y[cnt][2] = p[1].second;
    x[cnt][3] = p[0].first, y[cnt][3] = p[0].second;
    a[x[cnt][1]][y[cnt][1]] = '0' + '1' - a[x[cnt][1]][y[cnt][1]];
    a[x[cnt][2]][y[cnt][2]] = '0' + '1' - a[x[cnt][2]][y[cnt][2]];
    a[x[cnt][3]][y[cnt][3]] = '0' + '1' - a[x[cnt][3]][y[cnt][3]];
    f(xx, yy);
    return;
  }
  if (q.size() == 3) {
    x[++cnt][1] = q[0].first, y[cnt][1] = q[0].second;
    x[cnt][2] = q[2].first, y[cnt][2] = q[2].second;
    x[cnt][3] = q[1].first, y[cnt][3] = q[1].second;
    a[x[cnt][1]][y[cnt][1]] = '0' + '1' - a[x[cnt][1]][y[cnt][1]];
    a[x[cnt][2]][y[cnt][2]] = '0' + '1' - a[x[cnt][2]][y[cnt][2]];
    a[x[cnt][3]][y[cnt][3]] = '0' + '1' - a[x[cnt][3]][y[cnt][3]];
    return;
  }
  if (q.size() == 4) {
    x[++cnt][1] = q[0].first, y[cnt][1] = q[0].second;
    x[cnt][2] = q[2].first, y[cnt][2] = q[2].second;
    x[cnt][3] = q[1].first, y[cnt][3] = q[1].second;
    a[x[cnt][1]][y[cnt][1]] = '0' + '1' - a[x[cnt][1]][y[cnt][1]];
    a[x[cnt][2]][y[cnt][2]] = '0' + '1' - a[x[cnt][2]][y[cnt][2]];
    a[x[cnt][3]][y[cnt][3]] = '0' + '1' - a[x[cnt][3]][y[cnt][3]];
    f(xx, yy);
  }
}
int main() {
  int t;
  cin >> t;
  while (t--) {
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i++) cin >> a[i] + 1;
    cnt = 0;
    if (n % 2 && m % 2 && a[n][m] == '1') {
      x[++cnt][1] = n, y[cnt][1] = m;
      x[cnt][2] = n - 1, y[cnt][2] = m;
      x[cnt][3] = n, y[cnt][3] = m - 1;
      a[n][m] = '0' + '1' - a[n][m];
      a[n - 1][m] = '0' + '1' - a[n - 1][m];
      a[n][m - 1] = '0' + '1' - a[n][m - 1];
    }
    if (m % 2) {
      for (int i = 2; i <= n; i += 2) {
        if (a[i][m] + a[i - 1][m] == '0' + '1') {
          if (a[i][m] == '1') {
            x[++cnt][1] = i, y[cnt][1] = m;
            a[i][m] = '0';
          } else
            x[++cnt][1] = i - 1, y[cnt][1] = m, a[i - 1][m] = '0';
          x[cnt][2] = i - 1, y[cnt][2] = m - 1;
          x[cnt][3] = i, y[cnt][3] = m - 1;
          a[i - 1][m - 1] = '0' + '1' - a[i - 1][m - 1];
          a[i][m - 1] = '0' + '1' - a[i][m - 1];
        }
      }
    }
    if (n % 2) {
      for (int i = 2; i <= m; i += 2) {
        if (a[n][i] + a[n][i - 1] == '0' + '1') {
          if (a[n][i] == '1') {
            x[++cnt][1] = n, y[cnt][1] = i;
            a[n][i] = '0';
          } else
            x[++cnt][1] = n, y[cnt][1] = i - 1, a[n][i - 1] = '0';
          x[cnt][2] = n - 1, y[cnt][2] = i;
          x[cnt][3] = n - 1, y[cnt][3] = i - 1;
          a[n - 1][i] = '0' + '1' - a[n - 1][i];
          a[n - 1][i - 1] = '0' + '1' - a[n - 1][i - 1];
        }
      }
    }
    for (int i = 2; i <= n; i += 2) {
      for (int j = 2; j <= m; j += 2) {
        f(i, j);
      }
    }
    if (n % 2) {
      for (int i = 2; i <= m; i += 2) f(n, i);
    }
    if (m % 2) {
      for (int i = 2; i <= n; i += 2) f(i, m);
    }
    cout << cnt << endl;
    for (int i = 1; i <= cnt; i++)
      cout << x[i][1] << ' ' << y[i][1] << ' ' << x[i][2] << ' ' << y[i][2]
           << ' ' << x[i][3] << ' ' << y[i][3] << endl;
  }
}
