#include <bits/stdc++.h>
using namespace std;
long long n;
char a[1005][1005];
long long c[1005];
string s[1005];
vector<pair<long long, long long> > f, fs, ss;
void sw(long long x, long long y) {
  swap(c[x], c[y]);
  for (long long i = 1; i <= n; i++) {
    swap(a[i][x], a[i][y]);
  }
  f.push_back({x, y});
}
void solve() {
  cin >> n;
  for (long long i = 1; i <= n; i++) {
    for (long long j = 1; j <= n; j++) {
      a[i][j] = '0';
    }
  }
  for (long long i = 1; i < n; i++) {
    long long x, y;
    cin >> x >> y;
    a[x][y] = '1';
    c[y]++;
  }
  for (long long i = 1; i < n; i++) {
    long long m = 1;
    for (long long j = 1; j <= n - i + 1; j++) {
      if (c[j] > c[m]) m = j;
    }
    if (n - i + 1 == m) continue;
    sw(m, n - i + 1);
  }
  for (long long i = 1; i <= n; i++) {
    a[i][0] = 'z';
    s[i] = a[i];
  }
  for (long long i = 1; i < n; i++) {
    long long m = 1;
    for (long long j = 1; j <= n - i + 1; j++) {
      if (s[j] > s[m]) m = j;
    }
    if (n - i + 1 == m) continue;
    swap(s[m], s[n - i + 1]);
    fs.push_back({m, n - i + 1});
  }
  for (long long i = 1; i <= n / 2; i++) {
    ss.push_back({i, n - i + 1});
  }
  cout << (f.size() + fs.size() + ss.size()) << "\n";
  for (pair<long long, long long> x : f) {
    cout << "2 " << x.first << " " << x.second << "\n";
  }
  for (pair<long long, long long> x : fs) {
    cout << "1 " << x.first << " " << x.second << "\n";
  }
  for (pair<long long, long long> x : ss) {
    cout << "2 " << x.first << " " << x.second << "\n";
  }
}
signed main() {
  ios_base::sync_with_stdio(false);
  long long t = 1;
  while (t--) solve();
  return 0;
}
