#include <bits/stdc++.h>
using namespace std;
int main() {
  int t;
  cin >> t;
  vector<string> v(100, string(100, ' '));
  vector<pair<int, int>> v0;
  vector<pair<int, int>> v1;
  vector<array<pair<int, int>, 3>> res;
  auto apply = [&v](const array<pair<int, int>, 3>& a) {
    char& c1 = v[a[0].first][a[0].second];
    c1 = '0' + ('1' - c1);
    char& c2 = v[a[1].first][a[1].second];
    c2 = '0' + ('1' - c2);
    char& c3 = v[a[2].first][a[2].second];
    c3 = '0' + ('1' - c3);
  };
  while (t--) {
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; ++i) {
      cin >> v[i];
    }
    if (n % 2 && m % 2 && v[n - 1][m - 1] == '1') {
      array<pair<int, int>, 3> a;
      a[0] = make_pair(n - 1, m - 1);
      a[1] = make_pair(n - 2, m - 1);
      a[2] = make_pair(n - 1, m - 2);
      res.push_back(a);
      apply(a);
    }
    if (n % 2) {
      for (int j = 0; j < m - m % 2; j += 2) {
        if (v[n - 1][j] == '1' || v[n - 1][j + 1] == '1') {
          array<pair<int, int>, 3> a;
          int num = 0;
          for (int jj = j; num < 3 && jj < j + 2; ++jj) {
            if (v[n - 1][jj] == '1') {
              a[num] = make_pair(n - 1, jj);
              ++num;
            }
          }
          for (int jj = j; num < 3 && jj < j + 2; ++jj) {
            a[num] = make_pair(n - 2, jj);
            ++num;
          }
          res.push_back(a);
          apply(a);
        }
      }
    }
    if (m % 2) {
      for (int i = 0; i < n - n % 2; i += 2) {
        if (v[i][m - 1] == '1' || v[i + 1][m - 1] == '1') {
          array<pair<int, int>, 3> a;
          int num = 0;
          for (int ii = i; num < 3 && ii < i + 2; ++ii) {
            if (v[ii][m - 1] == '1') {
              a[num] = make_pair(ii, m - 1);
              ++num;
            }
          }
          for (int ii = i; num < 3 && ii < i + 2; ++ii) {
            a[num] = make_pair(ii, m - 2);
            ++num;
          }
          res.push_back(a);
          apply(a);
        }
      }
    }
    for (int i = 0; i < n - n % 2; i += 2) {
      for (int j = 0; j < m - m % 2; j += 2) {
        for (int ii = i; ii < i + 2; ++ii) {
          for (int jj = j; jj < j + 2; ++jj) {
            if (v[ii][jj] == '0') {
              v0.push_back(make_pair(ii, jj));
            } else {
              v1.push_back(make_pair(ii, jj));
            }
          }
        }
        while (!v1.empty()) {
          array<pair<int, int>, 3> a;
          if (v1.size() >= 3) {
            a[0] = v1.back();
            v1.pop_back();
            a[1] = v1.back();
            v1.pop_back();
            a[2] = v1.back();
            v1.pop_back();
            v0.push_back(a[0]);
            v0.push_back(a[1]);
            v0.push_back(a[2]);
          } else {
            a[0] = v1.back();
            v1.pop_back();
            a[1] = v0.back();
            v0.pop_back();
            a[2] = v0.back();
            v0.pop_back();
            v0.push_back(a[0]);
            v1.push_back(a[1]);
            v1.push_back(a[2]);
          }
          res.push_back(a);
        }
        v0.clear();
        v1.clear();
      }
    }
    cout << res.size() << endl;
    for (const auto& a : res) {
      cout << (a[0].first + 1) << ' ' << (a[0].second + 1) << ' '
           << (a[1].first + 1) << ' ' << (a[1].second + 1) << ' '
           << (a[2].first + 1) << ' ' << (a[2].second + 1) << endl;
    }
    res.clear();
  }
  return 0;
}
