#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);
}
