#include <bits/stdc++.h>
int n;
int cnt[2][1010];
int a[1010][1010];
int o1[2010], o2[2010], o3[2010], tot;
void swap(int t, int x, int y) {
  int tmp[1010];
  int z = cnt[t][x];
  cnt[t][x] = cnt[t][y];
  cnt[t][y] = z;
  if (t) {
    for (int i = 1; i <= n; ++i) {
      z = a[i][x];
      a[i][x] = a[i][y];
      a[i][y] = z;
    }
  } else {
    for (int i = 1; i <= n; ++i) {
      z = a[x][i];
      a[x][i] = a[y][i];
      a[y][i] = z;
    }
  }
  o1[++tot] = t + 1;
  o2[tot] = x;
  o3[tot] = y;
}
void debug() {
  printf("\nDEBUG\n  ");
  for (int i = 1; i <= n; ++i) printf("%d ", cnt[1][i]);
  printf("\n");
  for (int i = 1; i <= n; ++i) {
    printf("%d ", cnt[0][i]);
    for (int j = 1; j <= n; ++j) printf("%d ", a[i][j]);
    printf("\n");
  }
}
int main() {
  scanf("%d", &n);
  int x, y;
  for (int i = 1; i < n; ++i) {
    scanf("%d %d", &x, &y);
    ++a[x][y];
    ++cnt[0][x];
    ++cnt[1][y];
  }
  for (int i = 1; i < n; ++i) {
    int j;
    for (j = i; j <= n; ++j)
      if (!cnt[0][j]) break;
    if (j > i) swap(0, i, j);
    for (j = i; j <= n; ++j)
      if (cnt[1][j]) break;
    if (j > i && j <= n) swap(1, i, j);
    for (j = i; j <= n; ++j)
      if (a[i][j]) --cnt[1][j];
    for (j = i; j <= n; ++j)
      if (a[j][i]) --cnt[0][j];
  }
  printf("%d\n", tot);
  for (int i = 1; i <= tot; ++i) printf("%d %d %d\n", o1[i], o2[i], o3[i]);
  return 0;
}
