#include <bits/stdc++.h>
template <class T>
void rd(T &x) {
  x = 0;
  T f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch <= '9' && ch >= '0') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  x *= f;
}
using namespace std;
const int N = 105;
int T;
int n, m;
int a[N][N];
struct ghb {
  int x_1, y_1, x_2, y_2, x_3, y_3;
  void out() { printf("%d %d %d %d %d %d\n", x_1, y_1, x_2, y_2, x_3, y_3); }
};
vector<ghb> S;
int main() {
  rd(T);
  while (T--) {
    rd(n);
    rd(m);
    for (int i = 1; i <= n; i++) {
      char s[N];
      scanf("%s", s + 1);
      for (int j = 1; j <= m; j++) a[i][j] = s[j] - '0';
    }
    S.clear();
    for (int i = 1; i < n; i++) {
      for (int j = 1; j < m; j++) {
        if (a[i][j]) {
          S.push_back((ghb){i, j, i + 1, j, i + 1, j + 1});
          S.push_back((ghb){i, j, i, j + 1, i + 1, j + 1});
          S.push_back((ghb){i, j, i, j + 1, i + 1, j});
        }
      }
    }
    for (int j = 1; j < m; j++) {
      if (a[n][j]) {
        S.push_back((ghb){n, j, n - 1, j, n - 1, j + 1});
        S.push_back((ghb){n, j, n, j + 1, n - 1, j + 1});
        S.push_back((ghb){n, j, n - 1, j, n, j + 1});
      }
    }
    for (int i = 1; i < n; i++) {
      if (a[i][m]) {
        S.push_back((ghb){i, m, i + 1, m, i, m - 1});
        S.push_back((ghb){i, m, i, m - 1, i + 1, m - 1});
        S.push_back((ghb){i, m, i + 1, m, i + 1, m - 1});
      }
    }
    if (a[n][m]) {
      S.push_back((ghb){n, m, n - 1, m, n, m - 1});
      S.push_back((ghb){n, m, n - 1, m, n - 1, m - 1});
      S.push_back((ghb){n, m, n, m - 1, n - 1, m - 1});
    }
    printf("%d\n", (int)S.size());
    for (auto x : S) x.out();
  }
  return 0;
}
