#include <bits/stdc++.h>
using namespace std;
using vvi = vector<vector<int> >;
using vvl = vector<vector<long long> >;
const long long M = 1e6;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
long long binpow(long long a, long long b) {
  long long res = 1;
  while (b > 0) {
    if (b & 1) res = res * a % M;
    a = a * a % M;
    b >>= 1;
  }
  return res;
}
using op = tuple<int, int, int, int, int, int>;
void solve() {
  int n, m;
  cin >> n >> m;
  vector<vector<int> > mat(n, vector<int>(m));
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    for (int j = 0; j < m; j++) {
      mat[i][j] = s[j] - '0';
    }
  }
  vector<op> ans;
  auto pickx = [&](int a1, int b1, int a2, int b2, int x) {
    pair<int, int> p[3];
    int at = 0;
    int ones = 3 - x;
    for (int i = a1; i <= a2 && at < 3; i++) {
      for (int j = b1; j <= b2 && at < 3; j++) {
        if (mat[i][j] == 0 && x) {
          p[at++] = {i, j};
          mat[i][j] ^= 1;
          x--;
        } else if (mat[i][j] && ones) {
          p[at++] = {i, j};
          mat[i][j] ^= 1;
          ones--;
        }
      }
    }
    ans.emplace_back(p[0].first, p[0].second, p[1].first, p[1].second,
                     p[2].first, p[2].second);
  };
  auto fix = [&](int a1, int b1, int a2, int b2) {
    int s = 0;
    for (int i = a1; i <= a2; i++) {
      for (int j = b1; j <= b2; j++) {
        s += mat[i][j];
      }
    }
    if (s == 0) return;
    if (s == 1) {
      pickx(a1, b1, a2, b2, 2);
      pickx(a1, b1, a2, b2, 2);
      pickx(a1, b1, a2, b2, 0);
    } else if (s == 2) {
      pickx(a1, b1, a2, b2, 2);
      pickx(a1, b1, a2, b2, 0);
    } else if (s == 3) {
      pickx(a1, b1, a2, b2, 0);
    } else {
      pickx(a1, b1, a2, b2, 0);
      pickx(a1, b1, a2, b2, 2);
      pickx(a1, b1, a2, b2, 2);
      pickx(a1, b1, a2, b2, 0);
    }
  };
  for (int i = 0; i + 1 < n; i += 2) {
    for (int j = 0; j + 1 < m; j += 2) {
      fix(i, j, i + 1, j + 1);
    }
    if (m % 2) fix(i, m - 2, i + 1, m - 1);
  }
  if (n % 2) {
    for (int j = 0; j + 1 < m; j += 2) {
      fix(n - 2, j, n - 1, j + 1);
    }
    if (m % 2) fix(n - 2, m - 2, n - 1, m - 1);
  }
  cout << ans.size() << "\n";
  for (auto &[a, b, c, d, e, f] : ans) {
    cout << a + 1 << " " << b + 1 << " " << c + 1 << " " << d + 1 << " "
         << e + 1 << " " << f + 1 << "\n";
  }
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  cin >> t;
  while (t--) {
    solve();
  }
}
