#include <bits/stdc++.h>
using namespace std;
inline void Read(int& s) {
  s = 0;
  char c = getchar();
  while (c < '0' || c > '9') c = getchar();
  while (c >= '0' && c <= '9') {
    s = (s << 3) + (s << 1) + (c & 15);
    c = getchar();
  }
  return;
}
const int N = 103;
int Q, n, m;
int a[N][N];
int st[6][N * N * 3], v;
inline void work(const int p) {
  if (p & 1) {
    a[n - 1][m - 1] ^= 1;
    a[n - 1][m] ^= 1;
    a[n][m - 1] ^= 1;
  }
  if (p & 2) {
    a[n - 1][m] ^= 1;
    a[n - 1][m - 1] ^= 1;
    a[n][m] ^= 1;
  }
  if (p & 4) {
    a[n][m - 1] ^= 1;
    a[n - 1][m - 1] ^= 1;
    a[n][m] ^= 1;
  }
  if (p & 8) {
    a[n][m] ^= 1;
    a[n - 1][m] ^= 1;
    a[n][m - 1] ^= 1;
  }
  return;
}
inline void Add(const int p) {
  if (p & 1) {
    ++v;
    st[0][v] = n - 1, st[1][v] = m - 1;
    st[2][v] = n - 1, st[3][v] = m;
    st[4][v] = n, st[5][v] = m - 1;
  }
  if (p & 2) {
    ++v;
    st[0][v] = n - 1, st[1][v] = m;
    st[2][v] = n - 1, st[3][v] = m - 1;
    st[4][v] = n, st[5][v] = m;
  }
  if (p & 4) {
    ++v;
    st[0][v] = n, st[1][v] = m - 1;
    st[2][v] = n - 1, st[3][v] = m - 1;
    st[4][v] = n, st[5][v] = m;
  }
  if (p & 8) {
    ++v;
    st[0][v] = n, st[1][v] = m;
    st[2][v] = n - 1, st[3][v] = m;
    st[4][v] = n, st[5][v] = m - 1;
  }
  return;
}
int main() {
  scanf("%d", &Q);
  while (Q--) {
    scanf("%d %d", &n, &m);
    int i, j;
    for (i = 1; i <= n; ++i) {
      for (j = 1; j <= m; ++j) scanf("%1d", &a[i][j]);
    }
    v = 0;
    for (i = 1; i + 2 <= n; ++i) {
      for (j = 1; j <= m; ++j) {
        if (a[i][j]) {
          ++v;
          st[0][v] = i, st[1][v] = j, a[i][j] ^= 1;
          st[2][v] = i + 1, st[3][v] = j, a[i + 1][j] ^= 1;
          st[4][v] = i + 1;
          if (j == 1)
            st[5][v] = j + 1, a[i + 1][j + 1] ^= 1;
          else
            st[5][v] = j - 1, a[i + 1][j - 1] ^= 1;
        }
      }
    }
    for (j = 1; j + 2 <= m; ++j) {
      if (a[n - 1][j]) {
        ++v;
        st[0][v] = n - 1, st[1][v] = j, a[n - 1][j] ^= 1;
        st[2][v] = n - 1, st[3][v] = j + 1, a[n - 1][j + 1] ^= 1;
        st[4][v] = n, st[5][v] = j + 1, a[n][j + 1] ^= 1;
      }
      if (a[n][j]) {
        ++v;
        st[0][v] = n, st[1][v] = j, a[n][j] ^= 1;
        st[2][v] = n, st[3][v] = j + 1, a[n][j + 1] ^= 1;
        st[4][v] = n - 1, st[5][v] = j + 1, a[n - 1][j + 1] ^= 1;
      }
    }
    for (int sta = 0; sta < 16; ++sta) {
      work(sta);
      if (!a[n - 1][m - 1] && !a[n - 1][m] && !a[n][m - 1] && !a[n][m]) {
        Add(sta);
        break;
      }
      work(sta);
    }
    printf("%d\n", v);
    for (i = 1; i <= v; ++i) {
      for (int u = 0; u < 5; ++u) printf("%d ", st[u][i]);
      printf("%d\n", st[5][i]);
    }
  }
  return 0;
}
