#include <bits/stdc++.h>
using namespace std;
long long int add(long long int a, long long int b,
                  long long int p = 1000000007) {
  a %= p;
  b %= p;
  return (a + b + p) % p;
}
long long int mul(long long int a, long long int b,
                  long long int p = 1000000007) {
  a %= p;
  b %= p;
  return (a * b + p) % p;
}
long long int power(long long int x, long long int n,
                    long long int p = 1000000007) {
  if (x == 0) return 0;
  if (n == 0 || x == 1) return 1LL;
  long long int r = (power(x, n / 2, p)) % p;
  if (n & 1)
    return mul(mul(r, r, p), x, p);
  else
    return mul(r, r, p);
}
long long int inv(long long int x) { return power(x, 1000000007 - 2); }
void __sol() {
  int n, m;
  cin >> n >> m;
  string a[n];
  for (long long int i = 0; i < n; i++) cin >> a[i];
  vector<vector<pair<int, int>>> v;
  for (long long int i = 0; i < n - 2; i++) {
    for (long long int j = 0; j < m; j++) {
      if (a[i][j] == '1') {
        vector<pair<int, int>> temp;
        temp.emplace_back(i, j);
        a[i][j] = ((a[i][j] - '0') ^ 1) + '0';
        temp.emplace_back(i + 1, j);
        a[i + 1][j] = ((a[i + 1][j] - '0') ^ 1) + '0';
        if (j < m - 1) {
          temp.emplace_back(i + 1, j + 1);
          a[i + 1][j + 1] = ((a[i + 1][j + 1] - '0') ^ 1) + '0';
        } else {
          temp.emplace_back(i + 1, j - 1);
          a[i + 1][j - 1] = ((a[i + 1][j - 1] - '0') ^ 1) + '0';
        }
        v.emplace_back(temp);
      }
    }
  }
  for (long long int j = 0; j < m - 1; j++) {
    if (a[n - 1][j] == '1' || a[n - 2][j] == '1') {
      vector<pair<int, int>> temp;
      int cnt = 3;
      if (a[n - 2][j] == '1') {
        temp.emplace_back(n - 2, j);
        a[n - 2][j] = ((a[n - 2][j] - '0') ^ 1) + '0';
        cnt--;
      }
      if (a[n - 1][j] == '1') {
        temp.emplace_back(n - 1, j);
        a[n - 1][j] = ((a[n - 1][j] - '0') ^ 1) + '0';
        cnt--;
      }
      if (cnt == 1) {
        temp.emplace_back(n - 2, j + 1);
        a[n - 2][j + 1] = ((a[n - 2][j + 1] - '0') ^ 1) + '0';
      } else {
        temp.emplace_back(n - 2, j + 1);
        a[n - 2][j + 1] = ((a[n - 2][j + 1] - '0') ^ 1) + '0';
        temp.emplace_back(n - 1, j + 1);
        a[n - 1][j + 1] = ((a[n - 1][j + 1] - '0') ^ 1) + '0';
      }
      v.emplace_back(temp);
    }
  }
  if (a[n - 2][m - 1] == '1' && a[n - 1][m - 1] == '1') {
    vector<pair<int, int>> temp;
    temp.emplace_back(n - 2, m - 1);
    temp.emplace_back(n - 2, m - 2);
    temp.emplace_back(n - 1, m - 2);
    v.emplace_back(temp);
    temp.clear();
    temp.emplace_back(n - 1, m - 1);
    temp.emplace_back(n - 2, m - 2);
    temp.emplace_back(n - 1, m - 2);
    v.emplace_back(temp);
    temp.clear();
  } else if (a[n - 2][m - 1] == '1' && a[n - 1][m - 1] == '0') {
    vector<pair<int, int>> temp;
    temp.emplace_back(n - 2, m - 1);
    temp.emplace_back(n - 2, m - 2);
    temp.emplace_back(n - 1, m - 2);
    v.emplace_back(temp);
    temp.clear();
    temp.emplace_back(n - 2, m - 2);
    temp.emplace_back(n - 2, m - 1);
    temp.emplace_back(n - 1, m - 1);
    v.emplace_back(temp);
    temp.clear();
    temp.emplace_back(n - 1, m - 2);
    temp.emplace_back(n - 2, m - 1);
    temp.emplace_back(n - 1, m - 1);
    v.emplace_back(temp);
    temp.clear();
  } else if (a[n - 2][m - 1] == '0' && a[n - 1][m - 1] == '1') {
    vector<pair<int, int>> temp;
    temp.emplace_back(n - 1, m - 1);
    temp.emplace_back(n - 2, m - 2);
    temp.emplace_back(n - 1, m - 2);
    v.emplace_back(temp);
    temp.clear();
    temp.emplace_back(n - 2, m - 2);
    temp.emplace_back(n - 2, m - 1);
    temp.emplace_back(n - 1, m - 1);
    v.emplace_back(temp);
    temp.clear();
    temp.emplace_back(n - 1, m - 2);
    temp.emplace_back(n - 2, m - 1);
    temp.emplace_back(n - 1, m - 1);
    v.emplace_back(temp);
    temp.clear();
  }
  cout << v.size() << "\n";
  for (auto &i : v) {
    for (auto &j : i) cout << j.first + 1 << " " << j.second + 1 << " ";
    cout << "\n";
  }
  return;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long int tc = 1;
  cin >> tc;
  while (tc--) __sol();
  return 0;
}
