#include <bits/stdc++.h>
using namespace std;
int main(void) {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  int t;
  cin >> t;
  while (t--) {
    int N, M;
    cin >> N >> M;
    vector<string> S(N);
    for (int i = 0; i < N; i++) {
      cin >> S[i];
    }
    vector<tuple<int, int, int, int, int, int>> ans;
    auto f = [&](int i, int j) {
      vector<int> v(4);
      v[0] = S[i][j] - '0';
      v[1] = S[i][j + 1] - '0';
      v[2] = S[i + 1][j] - '0';
      v[3] = S[i + 1][j + 1] - '0';
      int sum = accumulate(v.begin(), v.end(), 0);
      if (sum == 0) {
        return;
      } else if (sum == 1) {
        if (S[i][j] == '1') {
          ans.emplace_back(i, j, i + 1, j, i + 1, j + 1);
          ans.emplace_back(i, j, i, j + 1, i + 1, j + 1);
          ans.emplace_back(i, j, i, j + 1, i + 1, j);
        }
        if (S[i][j + 1] == '1') {
          ans.emplace_back(i, j + 1, i + 1, j, i + 1, j + 1);
          ans.emplace_back(i, j, i, j + 1, i + 1, j + 1);
          ans.emplace_back(i, j, i, j + 1, i + 1, j);
        }
        if (S[i + 1][j] == '1') {
          ans.emplace_back(i, j + 1, i + 1, j, i + 1, j + 1);
          ans.emplace_back(i, j, i + 1, j, i + 1, j + 1);
          ans.emplace_back(i, j, i, j + 1, i + 1, j);
        }
        if (S[i + 1][j + 1] == '1') {
          ans.emplace_back(i, j + 1, i + 1, j, i + 1, j + 1);
          ans.emplace_back(i, j, i + 1, j, i + 1, j + 1);
          ans.emplace_back(i, j, i, j + 1, i + 1, j + 1);
        }
      } else if (sum == 2) {
        if (S[i][j] == '1') ans.emplace_back(i, j + 1, i + 1, j, i + 1, j + 1);
        if (S[i][j + 1] == '1') ans.emplace_back(i, j, i + 1, j, i + 1, j + 1);
        if (S[i + 1][j] == '1') ans.emplace_back(i, j, i, j + 1, i + 1, j + 1);
        if (S[i + 1][j + 1] == '1') ans.emplace_back(i, j, i, j + 1, i + 1, j);
      } else if (sum == 3) {
        if (S[i][j] == '0') ans.emplace_back(i, j + 1, i + 1, j, i + 1, j + 1);
        if (S[i][j + 1] == '0') ans.emplace_back(i, j, i + 1, j, i + 1, j + 1);
        if (S[i + 1][j] == '0') ans.emplace_back(i, j, i, j + 1, i + 1, j + 1);
        if (S[i + 1][j + 1] == '0') ans.emplace_back(i, j, i, j + 1, i + 1, j);
      } else {
        ans.emplace_back(i, j + 1, i + 1, j, i + 1, j + 1);
        ans.emplace_back(i, j, i + 1, j, i + 1, j + 1);
        ans.emplace_back(i, j, i, j + 1, i + 1, j + 1);
        ans.emplace_back(i, j, i, j + 1, i + 1, j);
      }
    };
    for (int i = 0; i < N - 1; i += 2) {
      for (int j = 0; j < M - 1; j += 2) {
        f(i, j);
      }
    }
    for (int i = 0; i < N; i++) {
      for (int j = 0; j < M; j++) {
        if (N % 2 && i == N - 1) continue;
        if (M % 2 && j == M - 1) continue;
        S[i][j] = '0';
      }
    }
    if (N % 2 && M % 2) {
      f(N - 2, M - 2);
      S[N - 2][M - 2] = '0';
      S[N - 2][M - 1] = '0';
      S[N - 1][M - 2] = '0';
      S[N - 1][M - 1] = '0';
    }
    if (N % 2) {
      for (int j = 0; j < M - 1; j += 2) {
        f(N - 2, j);
      }
      for (int j = 0; j < M - 1; j++) {
        S[N - 1][j] = '0';
      }
    }
    if (M % 2) {
      for (int i = 0; i < N - 1; i += 2) {
        f(i, M - 2);
      }
    }
    cout << ans.size() << endl;
    for (auto [x1, y1, x2, y2, x3, y3] : ans) {
      cout << x1 + 1 << ' ' << y1 + 1 << ' ' << x2 + 1 << ' ' << y2 + 1 << ' '
           << x3 + 1 << ' ' << y3 + 1 << endl;
    }
  }
  return 0;
}
