func_code_string: #include <bits/stdc++.h>   using namespace std;   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     long long n, x, t, m, y, z, k;     cin >> t;     while (t--) {       cin >> n >> m;       vector<vector<long long> > a(n, vector<long long>(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 ;         }       }       vector<vector<long long> > ans;       auto f = [&](int i, int j) { a[i][j] ^= 1; };       for (int i = 0; i < n - 2; i++) {         for (int j = 0; j < m - 1; j++) {           if (a[i][j]) {             ans.push_back({i, j, i + 1, j, i, j + 1});             f(i, j);             f(i + 1, j);             f(i, j + 1);           }         }         if (a[i][m - 1]) {           ans.push_back({i, m - 1, i + 1, m - 1, i + 1, m - 2});           f(i, m - 1);           f(i + 1, m - 1);           f(i + 1, m - 2);         }       }       for (int j = 0; j < m - 2; j++) {         if (a[n - 2][j] && a[n - 1][j]) {           ans.push_back({n - 2, j, n - 1, j, n - 2, j + 1});           f(n - 2, j);           f(n - 1, j);           f(n - 2, j + 1);         } else if (a[n - 2][j]) {           ans.push_back({n - 2, j, n - 1, j + 1, n - 2, j + 1});           f(n - 2, j);           f(n - 1, j + 1);           f(n - 2, j + 1);         } else if (a[n - 1][j]) {           ans.push_back({n - 1, j, n - 1, j + 1, n - 2, j + 1});           f(n - 1, j);           f(n - 1, j + 1);           f(n - 2, j + 1);         }       }       for (int k = 0; k < 4; k++) {         vector<long long> move;         auto choose = [&](pair<long long, long long> o) {           move.push_back(o.first);           move.push_back(o.second);           a[o.first][o.second] ^= 1;         };         vector<pair<long long, long long> > b, g;         for (int i = n - 2; i < n; i++) {           for (int j = m - 2; j < m; j++) {             if (a[i][j])               b.push_back({i, j});             else               g.push_back({i, j});           }         }         if (b.size() == 0) break;         if (b.size() == 4) {           choose(b[0]);           choose(b[1]);           choose(b[2]);         } else if (b.size() == 1) {           choose(b[0]);           choose(g[0]);           choose(g[1]);         } else if (b.size() == 2) {           choose(b[0]);           choose(g[0]);           choose(g[1]);         } else if (b.size() == 3) {           choose(b[0]);           choose(b[1]);           choose(b[2]);         }         ans.push_back(move);       }       cout << ans.size() <<   n ;       for (auto &it : ans) {         for (int j : it) {           cout << j + 1 <<    ;         }         cout <<   n ;       }     }     return 0;   }   