func_code_string: #include <bits/stdc++.h>   using namespace std;   int solve() {     long long n;     cin >> n;     vector<vector<long long> > mat(n, vector<long long int>(n, 0));     for (long long int i = 0; i < n - 1; i++) {       long long x, y;       cin >> x >> y;       x--, y--;       mat[x][y] = 1;     }     vector<pair<long long, pair<long long int, long long int> > > ans;     vector<long long int> row(n, 0);     for (long long int i = 0; i < n; i++)       for (long long int j = 0; j < n; j++) row[i] += mat[i][j];     long long tot = 0;     for (long long int i = 0; i < n; i++)       for (long long int j = i; j < n; j++)         if (row[i] > row[j] && i != j) {           swap(mat[i], mat[j]);           swap(row[i], row[j]);           ans.push_back(make_pair(1, make_pair(i, j)));         }     for (long long int i = 0; i < n; i++) {       for (long long int j = i; j < n; j++) {         if (row[j] + tot == i) {           long long x = row[j];           tot += x;           if (j != i) {             swap(mat[i], mat[j]);             swap(row[i], row[j]);             ans.push_back(make_pair(1, make_pair(i, j)));           }           for (long long int k = i - x; k < i; k++) {             if (mat[i][k] != 1) {               for (long long int k1 = i; k1 < n; k1++)                 if (mat[i][k1] == 1) {                   ans.push_back(make_pair(2, make_pair(k, k1)));                   for (long long int s = 0; s < n; s++)                     swap(mat[s][k], mat[s][k1]);                 }             }           }           break;         }         long long x = row[i];         for (long long int k = i; k < n; k++) {           if (mat[i][k] == 1) {             for (long long int k1 = i - x; k1 < i; k1++)               if (mat[i][k1] == 0) {                 ans.push_back(make_pair(2, make_pair(k, k1)));                 for (long long int s = 0; s < n; s++) swap(mat[s][k], mat[s][k1]);               }           }         }       }     }     cout << (long long int)ans.size() <<   n ;     for (long long int i = 0; i < (long long int)ans.size(); i++) {       cout << ans[i].first <<     << ans[i].second.first + 1 <<                << ans[i].second.second + 1 <<   n ;     }     return 0;   }   int main() {     auto start = chrono::high_resolution_clock::now();     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     long long test_cases = 1;     while (test_cases--) solve();     auto stop = chrono::high_resolution_clock::now();     auto duration = chrono::duration_cast<chrono::milliseconds>(stop - start);   }   