#include <bits/stdc++.h>
using namespace std;
long long int oldr[10000];
long long int oldc[10000];
long long int newr[10000];
long long int newc[10000];
long long int t = 1;
vector<pair<long long int, long long int> > vv;
long long int g = 0;
vector<long long int> v[10000];
vector<pair<long long int, long long int> > ans;
void sp(long long int p, long long int a, long long int b) {
  long long int x, y, i;
  if (p == 1) {
    x = oldr[a];
    y = oldr[b];
    swap(oldr[a], oldr[b]);
    newr[x] = b;
    newr[y] = a;
    if (a != b) {
      ans.push_back(make_pair(a, b));
      g++;
    }
  } else {
    x = oldc[a];
    y = oldc[b];
    swap(oldc[a], oldc[b]);
    newc[x] = b;
    newc[y] = a;
    t++;
    if (a != b) ans.push_back(make_pair(a, b));
  }
}
int main() {
  long long int i, j, k, l, n, a, b, x, y;
  cin >> n;
  for (i = 1; i <= n; i++) {
    oldc[i] = i;
    newc[i] = i;
    oldr[i] = i;
    newr[i] = i;
  }
  for (i = 1; i <= n - 1; i++) {
    cin >> x >> y;
    v[x].push_back(y);
  }
  pair<long long int, long long int> p;
  for (i = 1; i <= n; i++) vv.push_back(make_pair(v[i].size(), i));
  sort(vv.begin(), vv.end());
  for (i = 0; i < vv.size(); i++) {
    p = vv[i];
    x = p.first;
    y = p.second;
    sp(1, i + 1, newr[y]);
  }
  for (i = 1; i <= n; i++) {
    x = oldr[i];
    long long int lim = i - 1;
    vector<long long int> tit;
    for (j = 0; j < v[x].size(); j++) tit.push_back(newc[v[x][j]]);
    sort(tit.begin(), tit.end());
    for (j = 0; j < tit.size(); j++) {
      a = tit[j];
      if (a < t) continue;
      sp(2, t, a);
    }
  }
  cout << ans.size() << endl;
  for (i = 1; i <= ans.size(); i++) {
    j = i - 1;
    if (i <= g)
      cout << "1 " << ans[j].first << " " << ans[j].second << endl;
    else
      cout << "2 " << ans[j].first << " " << ans[j].second << endl;
  }
}
