#include <bits/stdc++.h>
using namespace std;
template <class T>
inline string tostring(T n) {
  stringstream ss;
  ss << n;
  ss.flush();
  return ss.str();
}
template <class T>
inline string tobinary(T n) {
  string s = n ? "" : "0";
  while (n) {
    s += ((n & 1) + '0');
    n >>= 1;
  }
  return s;
}
template <class T>
inline int digits(T n) {
  int cnt = n ? 0 : 1;
  while (n) {
    n /= 10;
    cnt++;
  }
  return cnt;
}
template <class T1, class T2>
inline T2 gcd(T1 a, T2 b) {
  return !b ? a : gcd(b, a % b);
}
template <class T>
inline T abs(T a) {
  return a < 0 ? -a : a;
}
bool *mat[1010];
int mx[100010];
int my[100010];
int type[100010];
int itr;
inline int find_zero_col(int n) {
  int i, j;
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= n; j++) {
      if (mat[j][i]) {
        break;
      }
    }
    if (j == n + 1) {
      return i;
    }
  }
  return n;
}
inline int find_one_row(int n) {
  int i, j;
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= n; j++) {
      if (mat[i][j]) {
        return i;
      }
    }
  }
  return n;
}
inline void _swap(int a, int b, int f) {
  if (a == b) {
    return;
  }
  mx[itr] = a;
  my[itr] = b;
  type[itr++] = f;
  int i, j;
  for (i = 1; i <= b; i++) {
    if (f == 2) {
      {
        typeof(mat[i][a]) T;
        T = mat[i][a];
        mat[i][a] = mat[i][b];
        mat[i][b] = T;
      };
    } else {
      {
        typeof(mat[a][i]) T;
        T = mat[a][i];
        mat[a][i] = mat[b][i];
        mat[b][i] = T;
      };
    }
  }
}
inline void solve(int n) {
  if (n == 1) {
    int i;
    cout << itr << endl;
    for (i = 0; i <= itr - 1; i++) {
      cout << type[i] << " " << mx[i] << " " << my[i] << endl;
    }
    exit(0);
  }
  int id = find_zero_col(n);
  _swap(id, n, 2);
  id = find_one_row(n);
  _swap(id, n, 1);
  solve(n - 1);
}
int main() {
  int n, i, j, x, y;
  for (i = 1; i <= 1000; i++) {
    mat[i] = (bool *)calloc(1010, sizeof(bool));
  }
  cin >> n;
  for (i = 1; i <= n - 1; i++) {
    cin >> x >> y;
    mat[x][y] = true;
  }
  solve(n);
  return 0;
}
