func_code_string: #include <bits/stdc++.h>   using namespace std;   using ll = long long;   using ul = unsigned long long;   using ld = long double;   const int N = 101;   int a[N][N];   vector<vector<int>> ans;   void q(int ax, int ay, int bx, int by, int cx, int cy) {     a[ax][ay] ^= 1;     a[bx][by] ^= 1;     a[cx][cy] ^= 1;     ans.push_back({ax, ay, bx, by, cx, cy});   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     int t, n, m;     cin >> t;     for (int z = 0; z < (t); z++) {       cin >> n >> m;       string s;       for (int i = 0; i < (n); i++) {         cin >> s;         for (int j = 0; j < (m); j++) a[i][j] = s[j] -  0 ;       }       ans.clear();       for (int i = 0; i < (n - 2); i++)         for (int j = 0; j < (m); j++) {           if (a[i][j]) q(i, j, i + 1, j, i + 1, j + (j == 0 ? 1 : -1));         }       for (int i = 0; i < (m - 2); i++) {         if (a[n - 2][i] && a[n - 1][i])           q(n - 2, i, n - 1, i, n - 2, i + 1);         else if (a[n - 2][i])           q(n - 2, i, n - 2, i + 1, n - 1, i + 1);         else if (a[n - 1][i])           q(n - 1, i, n - 1, i + 1, n - 2, i + 1);       }       int ss = 0;       for (int i = 0; i < (2); i++)         for (int j = 0; j < (2); j++) ss ^= a[n - 2 + i][m - 2 + j];       for (int i = 0; i < (2); i++) {         for (int j = 0; j < (2); j++) {           if (a[n - 2 + i][m - 2 + j] == ss) continue;           vector<int> cv;           for (int i1 = 0; i1 < (2); i1++)             for (int j1 = 0; j1 < (2); j1++)               if (i1 != i || j1 != j) {                 cv.push_back(n - 2 + i1);                 cv.push_back(m - 2 + j1);               }           ans.push_back(cv);         }       }       cout << ans.size() <<   n ;       for (auto &pp : ans) {         for (int i : pp) cout << i + 1 <<    ;         cout <<   n ;       }     }   }   