#include <bits/stdc++.h>
int result[100010][3], m = 0, x[1010], y[1010];
int hor[1010], ver[1010];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    scanf("%d%d", &x[i], &y[i]);
    hor[x[i]]++;
    ver[y[i]]++;
  }
  int up = 0, right = n + 1;
  for (int i = 1; i <= n; i++) {
    if (up >= i) break;
    if (hor[i] == 0) {
      up++;
      if (up != i) {
        hor[i] = hor[up];
        hor[up] = 0;
        for (int k = 1; k < n; k++)
          if (x[k] == up) x[k] = i;
        result[m][0] = 1, result[m][1] = up, result[m][2] = i;
        m++;
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    if (right <= i) break;
    if (ver[i] == 0) {
      right--;
      if (right != i) {
        ver[i] = ver[right];
        ver[right] = 0;
        for (int k = 1; k < n; k++)
          if (y[k] == right) y[k] = i;
        result[m][0] = 2, result[m][1] = i, result[m][2] = right;
        m++;
      }
    }
  }
  memset(hor, 0, sizeof(hor));
  for (int i = 1; i < n; i++) {
    if (hor[y[i]] == 0 || hor[y[i]] > x[i]) hor[y[i]] = x[i];
  }
  int minj;
  for (int i = 1; i < right; i++) {
    minj = i;
    for (int j = i + 1; j < right; j++) {
      if (hor[minj] > hor[j]) minj = j;
    }
    if (minj != i) {
      result[m][0] = 2, result[m][1] = i, result[m][2] = minj;
      hor[minj] = hor[i];
      m++;
    }
  }
  printf("%d\n", m);
  for (int i = 0; i < m; i++)
    printf("%d %d %d\n", result[i][0], result[i][1], result[i][2]);
  return 0;
}
