#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  vector<vector<int> > V(n, vector<int>(n, 0));
  vector<int> lineas(n, 0);
  for (int i = 1; i < n; i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    V[a][b] = 1;
    lineas[a]++;
  }
  int maxindice = 0;
  vector<pair<int, pair<int, int> > > Vans;
  for (int i = 0; i < n; i++) {
    int miindice = i;
    for (int j = i + 1; j < n; j++) {
      if (lineas[j] < lineas[miindice]) {
        miindice = j;
      }
    }
    if (i != miindice) {
      Vans.push_back(make_pair(1, make_pair(i, miindice)));
      vector<int> A = V[i];
      V[i] = V[miindice];
      V[miindice] = A;
      int a = lineas[i];
      lineas[i] = lineas[miindice];
      lineas[miindice] = a;
    }
  }
  int pindice = 0;
  for (int i = 1; i < n; i++) {
    int k = pindice + 1;
    for (; pindice < i; pindice++) {
      if (V[i][pindice] == 0) {
        bool J = false;
        for (k = max(k, pindice + 1); k < n; k++) {
          if (V[i][k] == 1) {
            for (int l = 0; l < n; l++) {
              int aux = V[l][k];
              V[l][k] = V[l][pindice];
              V[l][pindice] = aux;
              J = true;
            }
            Vans.push_back(make_pair(2, make_pair(pindice, k)));
            k++;
            break;
          }
        }
        if (!J) {
          break;
        }
      }
    }
  }
  cout << Vans.size() << "\n";
  for (int i = 0; i < Vans.size(); i++) {
    cout << Vans[i].first << " " << Vans[i].second.first + 1 << " "
         << Vans[i].second.second + 1 << "\n";
  }
  return 0;
}
