#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<bitset>
#include<math.h>
#include<vector>
#include<string>
#include<stdio.h>
#include<cstring>
#include<iostream>
#include<algorithm>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
const int N=35;
const int mod=100000000;
const int MOD1=1000000007;
const int MOD2=1000000009;
const double EPS=0.00000001;
typedef long long ll;
const ll MOD=1000000007;
const int MAX=2000000010;
const ll INF=1ll<<55;
const double pi=acos(-1.0);
typedef double db;
typedef unsigned long long ull;
int a[N][N],p[N][N],f[N][N][N];
int get(int i,int j,int k) {
int sum=(f[i][j-1][k]+2*f[i][j][k]+f[i][j+1][k]+f[i-1][j][k])%3;
return ((3-sum)%3+3)%3;
}
int getans(int i,int j) {
int sum=(p[i][j-1]+2*p[i][j]+p[i][j+1]+p[i-1][j]+a[i][j])%3;
return ((3-sum)%3+3)%3;
}
void gauss(int n,int m) {
int d,i,j,k,h,w=0;
for (i=1,j=1;j<m;j++,w=0) {
for (k=i;k<=n;k++)
if (p[k][j]) w=k;
if (w) {
for (k=j;k<=m;k++) swap(p[i][k],p[w][k]);
for (k=i+1;k<=n;k++)
if (p[k][j]) {
d=(p[k][j]*p[i][j]%3+3)%3;
for (h=j;h<=m;h++) p[k][h]=((p[k][h]-d*p[i][h])%3+3)%3;
}
i++;
}
if (i>n) break ;
}
for (j=1;j<=m;j++) f[1][j][j]=0;
for (j=i-1;j;j--) {
for (k=1;k<m;k++)
if (p[j][k]) break ;
for (d=0,h=k+1;h<m;h++)
if (f[1][h][h]&&p[j][h]) d=(d+f[1][h][h]*p[j][h])%3;
f[1][k][k]=p[j][k]*(3-d+p[j][m])%3;
}
memset(p,0,sizeof(p));
for (j=1;j<=m;j++) p[1][j]=(f[1][j][j]+3)%3;
}
int main()
{
int i,j,k,n,m,t,ans;
scanf("%d", &t);
while (t--) {
scanf("%d%d", &n, &m);
memset(a,0,sizeof(a));
for (i=1;i<=n;i++)
for (j=1;j<=m;j++) scanf("%d", &a[i][j]);
memset(f,0,sizeof(f));
for (i=1;i<=m;i++) f[1][i][i]=1;
for (i=2;i<=n+1;i++)
for (j=1;j<=m;j++) {
f[i][j][m+1]=(3-a[i-1][j]+get(i-1,j,m+1))%3;
for (k=1;k<=m;k++) f[i][j][k]=get(i-1,j,k);
}
memset(p,0,sizeof(p));
for (i=1;i<=m;i++) {
p[i][m+1]=((3-f[n+1][i][m+1])%3+3)%3;
for (j=1;j<=m;j++) p[i][j]=f[n+1][i][j];
}
gauss(m,m+1);ans=0;
for (i=1;i<=m;i++) ans+=p[1][i];
for (i=2;i<=n;i++)
for (j=1;j<=m;j++) p[i][j]=getans(i-1,j),ans+=p[i][j];
printf("%d\n", ans);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
for (k=1;k<=p[i][j];k++) printf("%d %d\n", i, j);
}
return 0;
}