#include <bits/stdc++.h>
using namespace std;
const double PI = 2.0 * acos(0.0);
const double EPS = 1e-6;
vector<int> V[1005];
int px[1005];
int py[1005];
int cnt[1005];
bool dead[1005];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n - 1; i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    V[x].push_back(y);
    cnt[y]++;
  }
  for (int i = 1; i <= n; i++) px[i] = py[i] = i;
  vector<pair<int, pair<int, int> > > VV;
  for (int k = n; k > 1; k--) {
    for (int y = 1; y < k; y++) {
      if (cnt[py[y]] == 0) {
        VV.push_back(make_pair(2, make_pair(y, k)));
        swap(py[y], py[k]);
        break;
      }
    }
    dead[py[k]] = true;
    for (int x = 1; x < k; x++) {
      bool ok = false;
      for (__typeof((V[px[x]]).begin()) itr = (V[px[x]]).begin();
           itr != (V[px[x]]).end(); itr++) {
        if (!dead[*itr]) {
          ok = true;
          break;
        }
      }
      if (ok) {
        VV.push_back(make_pair(1, make_pair(x, k)));
        swap(px[x], px[k]);
        break;
      }
    }
    for (__typeof((V[px[k]]).begin()) itr = (V[px[k]]).begin();
         itr != (V[px[k]]).end(); itr++)
      cnt[*itr]--;
  }
  printf("%d\n", ((int)(VV).size()));
  for (__typeof((VV).begin()) itr = (VV).begin(); itr != (VV).end(); itr++)
    printf("%d %d %d\n", itr->first, itr->second.first, itr->second.second);
  return 0;
}
