func_code_string: #include <bits/stdc++.h>   using namespace std;   struct __s {     __s() {       if (1) {         ios_base::Init i;         cin.sync_with_stdio(0);         cin.tie(0);       }     }     ~__s() {       if (!1)         fprintf(stderr,  Execution time: %.3lf s. n ,                 (double)clock() / CLOCKS_PER_SEC);       long long n;       cin >> n;     }   } __S;   long long n, m;   long long x[55];   long long y[55];   long long first[55];   long long second[55];   long long I[55][55];   long long J[55][55];   bool u[55][55];   bool up[55];   bool ud[55];   bool ok[55];   vector<pair<pair<long long, long long>, pair<long long, long long> > > ans;   long long findUp() {     long long idx = -1;     for (long long i = 0; i < (long long)(m); i++) {       if (up[i]) continue;       if (idx == -1 || x[i] < x[idx] || (x[i] == x[idx] && y[i] < y[idx])) {         idx = i;       }     }     return idx;   }   long long findDown() {     long long idx = -1;     for (long long i = 0; i < (long long)(m); i++) {       if (ud[i]) continue;       if (idx == -1 || first[i] > first[idx] ||           (first[i] == first[idx] && second[i] < second[idx])) {         idx = i;       }     }     return idx;   }   void move(long long i, long long dx, long long dy) {     u[x[i]][y[i]] = false;     I[x[i]][y[i]] = -1;     ans.push_back(         make_pair(make_pair(x[i], y[i]), make_pair(x[i] + dx, y[i] + dy)));     x[i] += dx;     y[i] += dy;     u[x[i]][y[i]] = true;     I[x[i]][y[i]] = i;   }   void shift(long long i, long long dx, long long dy) {     long long first = x[i] + dx;     long long second = y[i] + dy;     if (u[first][second]) shift(I[first][second], dx, dy);     move(i, dx, dy);   }   int main(void) {     cin >> n >> m;     for (long long i = 0; i < (long long)(n); i++)       for (long long j = 0; j < (long long)(n); j++) J[i][j] = -1;     for (long long i = 0; i < (long long)(m); i++) {       cin >> x[i] >> y[i];       x[i]--;       y[i]--;       u[x[i]][y[i]] = true;       I[x[i]][y[i]] = i;     }     for (long long i = 0; i < (long long)(m); i++) {       cin >> first[i] >> second[i];       first[i]--;       second[i]--;       J[first[i]][second[i]] = i;     }     for (long long i = 0; i < (long long)(m); i++) {       long long idx = findUp();       while (x[idx] != 0 || y[idx] != i) {         while (x[idx] != 0 && !u[x[idx] - 1][y[idx]]) {           move(idx, -1, 0);         }         while (y[idx] != i) {           while (y[idx] > i && !u[x[idx]][y[idx] - 1]) {             move(idx, 0, -1);           }           while (y[idx] < i && !u[x[idx]][y[idx] + 1]) {             move(idx, 0, 1);           }           if (y[idx] != i) {             idx = I[x[idx]][y[idx] + 1];           }         }         while (x[idx] != 0 && !u[x[idx] - 1][y[idx]]) {           move(idx, -1, 0);         }       }       up[idx] = true;     }     for (long long i = 0; i < (long long)(m); i++) {       long long idx = findDown();       ud[idx] = true;       if (first[idx] < 2) continue;       while (x[idx] != first[idx] || y[idx] != second[idx]) {         while (x[idx] != first[idx] - 1) {           move(idx, 1, 0);         }         while (y[idx] > second[idx]) {           move(idx, 0, -1);         }         while (y[idx] < second[idx]) {           move(idx, 0, 1);         }         move(idx, 1, 0);       }       ok[idx] = true;     }     vector<long long> w[2];     for (long long i = 0; i < (long long)(min(n, 2LL)); i++) {       for (long long j = 0; j < (long long)(n); j++) {         if (J[i][j] == -1) continue;         w[i].push_back(J[i][j]);       }     }     for (long long i = 0; i < (long long)(2); i++) {       for (long long j = 1; j < w[i].size(); ++j) {         if (y[w[i][j - 1]] < y[w[i][j]]) continue;         move(w[i][j], 1, 0);         while (y[w[i][j]] < y[w[i][j - 1]]) move(w[i][j], 0, 1);         shift(w[i][j - 1], 0, -1);         move(w[i][j], -1, 0);       }     }     for (long long i = 0; i < (long long)(w[1].size()); i++) {       move(w[1][i], 1, 0);     }     for (long long i = 0; i < (long long)(2); i++) {       for (long long jj = 0; jj < (long long)(w[i].size()); jj++) {         long long j = w[i].size() - 1 - jj;         while (y[w[i][j]] != n - 1 - jj) move(w[i][j], 0, 1);       }       for (long long j = 0; j < (long long)(w[i].size()); j++) {         while (y[w[i][j]] != second[w[i][j]]) move(w[i][j], 0, -1);       }     }     cout << ans.size() <<   n ;     for (long long i = 0; i < (long long)(ans.size()); i++) {       cout << ans[i].first.first + 1 <<     << ans[i].first.second + 1 <<                << ans[i].second.first + 1 <<     << ans[i].second.second + 1 <<   n ;     }     return 0;   }   