#include <bits/stdc++.h>   using namespace std;   void __print(int x) { cerr << x; }   void __print(long x) { cerr << x; }   void __print(long long x) { cerr << x; }   void __print(unsigned x) { cerr << x; }   void __print(unsigned long x) { cerr << x; }   void __print(unsigned long long x) { cerr << x; }   void __print(float x) { cerr << x; }   void __print(double x) { cerr << x; }   void __print(long double x) { cerr << x; }   void __print(char x) { cerr <<      << x <<     ; }   void __print(const char *x) { cerr <<     << x <<    ; }   void __print(const string &x) { cerr <<     << x <<    ; }   void __print(bool x) { cerr << (x ?  true  :  false ); }   template <typename T, typename V>   void __print(const pair<T, V> &x) {     cerr <<  { ;     __print(x.first);     cerr <<  , ;     __print(x.second);     cerr <<  } ;   }   template <typename T>   void __print(const T &x) {     int f = 0;     cerr <<  { ;     for (auto &i : x) cerr << (f++ ?  ,  :   ), __print(i);     cerr <<  } ;   }   void _print() { cerr <<  ] n ; }   template <typename T, typename... V>   void _print(T t, V... v) {     __print(t);     if (sizeof...(v)) cerr <<  ,  ;     _print(v...);   }   string s[105];   long long tot(long long i, long long j) {     long long ans = 0;     if (s[i][j] ==  1 ) ans++;     if (s[i + 1][j] ==  1 ) ans++;     if (s[i][j + 1] ==  1 ) ans++;     if (s[i + 1][j + 1] ==  1 ) ans++;     return ans;   }   vector<long long> calc(long long i, long long j, long long cnt) {     vector<pair<long long, long long> > st1, st0;     vector<long long> res;     if (s[i][j] ==  1 )       st1.push_back({i, j});     else       st0.push_back({i, j});     if (s[i + 1][j] ==  1 )       st1.push_back({i + 1, j});     else       st0.push_back({i + 1, j});     if (s[i][j + 1] ==  1 )       st1.push_back({i, j + 1});     else       st0.push_back({i, j + 1});     if (s[i + 1][j + 1] ==  1 )       st1.push_back({i + 1, j + 1});     else       st0.push_back({i + 1, j + 1});     if (cnt == 1 || cnt == 2) {       for (long long k = 0; k < 1; k++) {         long long x = st1[k].first;         long long y = st1[k].second;         res.push_back(x);         res.push_back(y);         s[x][y] =  0 ;       }       for (long long k = 0; k < 2; k++) {         long long x = st0[k].first;         long long y = st0[k].second;         res.push_back(x);         res.push_back(y);         s[x][y] =  1 ;       }     } else if (cnt == 3 || cnt == 4) {       for (long long k = 0; k < 3; k++) {         long long x = st1[k].first;         long long y = st1[k].second;         res.push_back(x);         res.push_back(y);         s[x][y] =  0 ;       }     }     return res;   }   void solve() {     long long n, m;     cin >> n >> m;     for (long long i = 0; i < n; i++) cin >> s[i];     vector<vector<long long> > ans;     if (n & 1) {       for (long long i = 0; i < m; i += 2) {         long long x = (n - 1), y = i;         if (i == (m - 1)) y = (i - 1);         vector<long long> res;         if (s[x][y] ==  1  || s[x][y + 1] ==  1 ) {           if (s[x][y] ==  1  && s[x][y + 1] ==  1 ) {             res.push_back(x);             res.push_back(y);             s[x][y] =  0 ;             res.push_back(x);             res.push_back(y + 1);             s[x][y + 1] =  0 ;             res.push_back(x - 1);             res.push_back(y);             s[x - 1][y] = (!(s[x - 1][y] -  0 )) +  0 ;           } else if (s[x][y] ==  1 ) {             res.push_back(x);             res.push_back(y);             s[x][y] =  0 ;             res.push_back(x - 1);             res.push_back(y);             s[x - 1][y] = (!(s[x - 1][y] -  0 )) +  0 ;             res.push_back(x - 1);             res.push_back(y + 1);             s[x - 1][y + 1] = (!(s[x - 1][y + 1] -  0 )) +  0 ;           } else if (s[x][y + 1] ==  1 ) {             res.push_back(x);             res.push_back(y + 1);             s[x][y + 1] =  0 ;             res.push_back(x - 1);             res.push_back(y);             s[x - 1][y] = (!(s[x - 1][y] -  0 )) +  0 ;             res.push_back(x - 1);             res.push_back(y + 1);             s[x - 1][y + 1] = (!(s[x - 1][y + 1] -  0 )) +  0 ;           }         }         if (res.size() > 0) ans.push_back(res);       }       n--;     }     if (m & 1) {       for (long long i = 0; i < n; i += 2) {         long long x = i, y = (m - 1);         if (i == (n - 1)) x = (i - 1);         vector<long long> res;         if (s[x][y] ==  1  || s[x + 1][y] ==  1 ) {           if (s[x][y] ==  1  && s[x + 1][y] ==  1 ) {             res.push_back(x);             res.push_back(y);             s[x][y] =  0 ;             res.push_back(x + 1);             res.push_back(y);             s[x + 1][y] =  0 ;             res.push_back(x);             res.push_back(y - 1);             s[x][y - 1] = (!(s[x][y - 1] -  0 )) +  0 ;           } else if (s[x][y] ==  1 ) {             res.push_back(x);             res.push_back(y);             s[x][y] =  0 ;             res.push_back(x);             res.push_back(y - 1);             s[x][y - 1] = (!(s[x][y - 1] -  0 )) +  0 ;             res.push_back(x + 1);             res.push_back(y - 1);             s[x + 1][y - 1] = (!(s[x + 1][y - 1] -  0 )) +  0 ;           } else if (s[x + 1][y] ==  1 ) {             res.push_back(x + 1);             res.push_back(y);             s[x + 1][y] =  0 ;             res.push_back(x);             res.push_back(y - 1);             s[x][y - 1] = (!(s[x][y - 1] -  0 )) +  0 ;             res.push_back(x + 1);             res.push_back(y - 1);             s[x + 1][y - 1] = (!(s[x + 1][y - 1] -  0 )) +  0 ;           }         }         if (res.size() > 0) ans.push_back(res);       }       m--;     }     for (long long i = 0; i < (n); i += 2) {       for (long long j = 0; j < (m); j += 2) {         long long cnt = tot(i, j);         while (cnt > 0) {           vector<long long> res = calc(i, j, cnt);           cnt = tot(i, j);           ans.push_back(res);         }       }     }     cout << ans.size() << endl;     for (long long i = 0; i < ans.size(); i++) {       for (long long j = 0; j < 6; j++) {         cout << ans[i][j] + 1 <<    ;       }       cout << endl;     }   }   signed main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     long long t;     cin >> t;     for (long long i = 0; i < t; i++) {       solve();     }   }