#include <bits/stdc++.h>
using namespace std;
const int N = 110000;
const int M = 1100000;
const long long mod = 1e9 + 7;
int T, a[110][110];
int n, m;
char s[110];
struct op {
  int x1, y1, x2, y2, x3, y3;
};
vector<op> ans;
void change(int x1, int y1, int x2, int y2, int x3, int y3) {
  a[x1][y1] ^= 1;
  a[x2][y2] ^= 1;
  a[x3][y3] ^= 1;
  ans.push_back({x1, y1, x2, y2, x3, y3});
}
void change(pair<int, int> p1, pair<int, int> p2, pair<int, int> p3) {
  ans.push_back(
      {p1.first, p1.second, p2.first, p2.second, p3.first, p3.second});
}
pair<int, int> p[10];
int main() {
  scanf("%d", &T);
  while (T--) {
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; i++) {
      scanf("%s", s + 1);
      for (int j = 1; j <= m; j++) a[i][j] = s[j] - '0';
    }
    ans.clear();
    for (int i = 1; i < n; i++) {
      for (int j = 1; j < m; j++)
        if (a[i][j] == 1) {
          if (a[i][j + 1] == 1) {
            if (a[i + 1][j])
              change(i, j, i, j + 1, i + 1, j);
            else
              change(i, j, i, j + 1, i + 1, j + 1);
          } else
            change(i, j, i + 1, j, i + 1, j + 1);
        }
      if (a[i][m] == 1) change(i, m, i + 1, m, i + 1, m - 1);
    }
    for (int i = 1; i < m - 1; i++) {
      if (a[n][i] == 1) {
        if (a[n - 1][i] == 1)
          change(n, i, n - 1, i, n - 1, i + 1);
        else
          change(n, i, n, i + 1, n - 1, i + 1);
      } else if (a[n - 1][i] == 1)
        change(n - 1, i, n - 1, i + 1, n, i + 1);
    }
    int nn = 0, num;
    if (a[n][m]) p[++nn] = make_pair(n, m);
    if (a[n - 1][m]) p[++nn] = make_pair(n - 1, m);
    if (a[n][m - 1]) p[++nn] = make_pair(n, m - 1);
    if (a[n - 1][m - 1]) p[++nn] = make_pair(n - 1, m - 1);
    num = nn;
    if (!a[n][m]) p[++nn] = make_pair(n, m);
    if (!a[n - 1][m]) p[++nn] = make_pair(n - 1, m);
    if (!a[n][m - 1]) p[++nn] = make_pair(n, m - 1);
    if (!a[n - 1][m - 1]) p[++nn] = make_pair(n - 1, m - 1);
    if (num == 4) {
      change(p[1], p[2], p[3]);
      change(p[4], p[1], p[2]);
      change(p[1], p[3], p[4]);
      change(p[2], p[3], p[4]);
    } else if (num == 3) {
      change(p[1], p[2], p[3]);
    } else if (num == 2) {
      change(p[1], p[3], p[4]);
      change(p[2], p[3], p[4]);
    } else if (num == 1) {
      change(p[1], p[2], p[3]);
      change(p[2], p[1], p[4]);
      change(p[3], p[1], p[4]);
    }
    printf("%d\n", ans.size());
    for (auto p : ans)
      printf("%d %d %d %d %d %d\n", p.x1, p.y1, p.x2, p.y2, p.x3, p.y3);
  }
  return 0;
}
