#include <bits/stdc++.h>
using namespace std;
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long t, inp;
  cin >> t;
  while (t--) {
    long long n, m;
    cin >> n >> m;
    long long arr[n + 5][m + 5];
    bool nodd, modd;
    if (n % 2 == 1)
      nodd = true;
    else
      nodd = false;
    if (m % 2 == 1)
      modd = true;
    else
      modd = false;
    for (long long i = 1; i <= n; i++) {
      string s;
      cin >> s;
      for (long long j = 1; j <= m; j++) {
        arr[i][j] = s[j - 1] - '0';
      }
      if (modd) arr[i][m + 1] = 0;
    }
    if (nodd) {
      for (long long j = 1; j <= m; j++) {
        arr[n + 1][j] = 0;
      }
      if (modd) arr[n + 1][m + 1] = 0;
    }
    long long norg = n;
    long long morg = m;
    if (nodd) n++;
    if (modd) m++;
    vector<vector<long long> > ans;
    long long idx = 0;
    for (long long i = 1; i <= n; i += 2) {
      for (long long j = 1; j <= m; j += 2) {
        long long zerocnt = 0;
        long long onecnt = 0;
        vector<pair<long long, long long> > zeroidx;
        vector<pair<long long, long long> > oneidx;
        long long t1 = arr[i][j];
        long long t2 = arr[i + 1][j];
        long long t3 = arr[i][j + 1];
        long long t4 = arr[i + 1][j + 1];
        if (t1 == 0) {
          zerocnt++;
          zeroidx.push_back({i, j});
        } else {
          onecnt++;
          oneidx.push_back({i, j});
        }
        if (t2 == 0) {
          zerocnt++;
          zeroidx.push_back({i + 1, j});
        } else {
          onecnt++;
          oneidx.push_back({i + 1, j});
        }
        if (t3 == 0) {
          zerocnt++;
          zeroidx.push_back({i, j + 1});
        } else {
          onecnt++;
          oneidx.push_back({i, j + 1});
        }
        if (t4 == 0) {
          zerocnt++;
          zeroidx.push_back({i + 1, j + 1});
        } else {
          onecnt++;
          oneidx.push_back({i + 1, j + 1});
        }
        if (onecnt == 3) {
          ans.push_back({});
          for (auto x : oneidx) {
            long long xcr = x.first;
            long long ycr = x.second;
            if (xcr > norg) xcr -= 2;
            if (ycr > morg) ycr -= 2;
            ans[idx].push_back(xcr);
            ans[idx].push_back(ycr);
          }
          idx++;
        }
        if (onecnt == 2) {
          ans.push_back({});
          for (auto x : zeroidx) {
            long long xcr = x.first;
            long long ycr = x.second;
            if (xcr > norg) xcr -= 2;
            if (ycr > morg) ycr -= 2;
            ans[idx].push_back(xcr);
            ans[idx].push_back(ycr);
          }
          ans[idx].push_back(oneidx[0].first);
          ans[idx].push_back(oneidx[0].second);
          idx++;
          ans.push_back({});
          for (auto x : zeroidx) {
            long long xcr = x.first;
            long long ycr = x.second;
            if (xcr > norg) xcr -= 2;
            if (ycr > morg) ycr -= 2;
            ans[idx].push_back(xcr);
            ans[idx].push_back(ycr);
          }
          ans[idx].push_back(oneidx[1].first);
          ans[idx].push_back(oneidx[1].second);
          idx++;
        }
        if (onecnt == 1) {
          vector<pair<long long, long long> > newzeroidx;
          vector<pair<long long, long long> > newoneidx;
          ans.push_back({});
          ans[idx].push_back(zeroidx[0].first);
          ans[idx].push_back(zeroidx[0].second);
          ans[idx].push_back(zeroidx[1].first);
          ans[idx].push_back(zeroidx[1].second);
          ans[idx].push_back(oneidx[0].first);
          ans[idx].push_back(oneidx[0].second);
          newzeroidx.push_back(zeroidx[2]);
          newzeroidx.push_back(oneidx[0]);
          newoneidx.push_back(zeroidx[0]);
          newoneidx.push_back(zeroidx[1]);
          idx++;
          ans.push_back({});
          for (auto x : newzeroidx) {
            long long xcr = x.first;
            long long ycr = x.second;
            if (xcr > norg) xcr -= 2;
            if (ycr > morg) ycr -= 2;
            ans[idx].push_back(xcr);
            ans[idx].push_back(ycr);
          }
          ans[idx].push_back(newoneidx[0].first);
          ans[idx].push_back(newoneidx[0].second);
          idx++;
          ans.push_back({});
          for (auto x : newzeroidx) {
            long long xcr = x.first;
            long long ycr = x.second;
            if (xcr > norg) xcr -= 2;
            if (ycr > morg) ycr -= 2;
            ans[idx].push_back(xcr);
            ans[idx].push_back(ycr);
          }
          ans[idx].push_back(newoneidx[1].first);
          ans[idx].push_back(newoneidx[1].second);
          idx++;
        }
        if (onecnt == 4) {
          ans.push_back({});
          vector<pair<long long, long long> > newnewzero;
          vector<pair<long long, long long> > newnewone;
          for (long long i = 0; i < 3; i++) {
            long long xcr = oneidx[i].first;
            long long ycr = oneidx[i].second;
            if (xcr > norg) xcr -= 2;
            if (ycr > morg) ycr -= 2;
            ans[idx].push_back(xcr);
            ans[idx].push_back(ycr);
            newnewzero.push_back(oneidx[i]);
          }
          newnewone.push_back(oneidx[3]);
          idx++;
          oneidx = newnewone;
          zeroidx = newnewzero;
          vector<pair<long long, long long> > newzeroidx;
          vector<pair<long long, long long> > newoneidx;
          ans.push_back({});
          ans[idx].push_back(zeroidx[0].first);
          ans[idx].push_back(zeroidx[0].second);
          ans[idx].push_back(zeroidx[1].first);
          ans[idx].push_back(zeroidx[1].second);
          ans[idx].push_back(oneidx[0].first);
          ans[idx].push_back(oneidx[0].second);
          newzeroidx.push_back(zeroidx[2]);
          newzeroidx.push_back(oneidx[0]);
          newoneidx.push_back(zeroidx[0]);
          newoneidx.push_back(zeroidx[1]);
          idx++;
          ans.push_back({});
          for (auto x : newzeroidx) {
            long long xcr = x.first;
            long long ycr = x.second;
            if (xcr > norg) xcr -= 2;
            if (ycr > morg) ycr -= 2;
            ans[idx].push_back(xcr);
            ans[idx].push_back(ycr);
          }
          ans[idx].push_back(newoneidx[0].first);
          ans[idx].push_back(newoneidx[0].second);
          idx++;
          ans.push_back({});
          for (auto x : newzeroidx) {
            long long xcr = x.first;
            long long ycr = x.second;
            if (xcr > norg) xcr -= 2;
            if (ycr > morg) ycr -= 2;
            ans[idx].push_back(xcr);
            ans[idx].push_back(ycr);
          }
          ans[idx].push_back(newoneidx[1].first);
          ans[idx].push_back(newoneidx[1].second);
          idx++;
        }
      }
    }
    cout << ans.size() << "\n";
    for (auto v : ans) {
      for (long long i = 0; i < 3; i++) {
        long long x = v[2 * i];
        long long y = v[2 * i + 1];
        if (x > norg) x -= 2;
        if (y > morg) y -= 2;
        cout << x << " " << y << " ";
      }
      cout << "\n";
    }
  }
  return 0;
}
