func_code_string: #include <bits/stdc++.h>   using namespace std;   bool arr[1001][1001];   struct node {     int ct;     int lastind;   };   struct node1 {     int ct;     int lastind;   };   node row[1001];   node1 col[1001];   int main() {     vector<int> a;     int n, i, x, y, j, temp;     scanf( %d , &n);     for (i = 0; i < n - 1; i++) {       scanf( %d%d , &x, &y);       arr[x][y] = 1;     }     for (i = 1; i <= n; i++) {       row[i].ct = 0;       row[i].lastind = 0;       for (j = 1; j <= n; j++) {         if (arr[i][j]) {           row[i].ct++;           row[i].lastind = j;         }       }     }     for (i = 1; i <= n; i++) {       temp = i;       for (j = i + 1; j <= n; j++) {         if (row[temp].ct > row[j].ct) {           temp = j;         } else if (row[temp].ct == row[j].ct &&                    row[temp].lastind > row[j].lastind)           temp = j;       }       if (temp != i) {         a.push_back(1);         a.push_back(i);         a.push_back(temp);         swap(row[i], row[temp]);         for (j = 1; j <= n; j++) {           swap(arr[i][j], arr[temp][j]);         }       }     }     for (i = 1; i <= n; i++) {       col[i].ct = 0;       col[i].lastind = n;       for (j = 1; j <= n; j++) {         if (arr[j][i]) {           col[i].ct++;           col[i].lastind = min(col[i].lastind, j);         }       }     }     for (i = 1; i <= n; i++) {       temp = i;       for (j = i + 1; j <= n; j++) {         if (col[temp].ct < col[j].ct) {           temp = j;         } else if (col[temp].ct == col[j].ct &&                    col[temp].lastind > col[j].lastind)           temp = j;       }       if (temp != i) {         a.push_back(2);         a.push_back(i);         a.push_back(temp);         swap(col[i], col[temp]);       }     }     printf( %d n , a.size() / 3);     for (i = 0; i < a.size(); i += 3) {       printf( %d %d %d n , a[i], a[i + 1], a[i + 2]);     }     return 0;   }   