#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
using namespace std;
const int INF = 100500;
const int MAXN = 1e5 + 9;
vector<vector<int> > gg;
int n;
int ans[MAXN * 2];
int girl[2 * MAXN];
int boy[2 * MAXN];
bool used[2 * MAXN];
void dfs(int v, int col) {
  used[v] = 1;
  ans[v] = col;
  for (int i = 0; i < (int)(gg[v]).size(); i++) {
    int to = gg[v][i];
    if (!used[to]) dfs(to, col ^ 1);
  }
}
void input() {
  cin >> n;
  gg.resize(2 * n);
  for (int i = 0; i < n; i++) {
    int u, v;
    cin >> u >> v;
    u--, v--;
    boy[i] = u;
    girl[i] = v;
    gg[u].push_back(v);
    gg[v].push_back(u);
    gg[2 * i].push_back(2 * i + 1);
    gg[2 * i + 1].push_back(2 * i);
  }
}
void solve() {
  for (int i = 0; i < 2 * n; i++)
    if (!used[i]) dfs(i, 0);
  for (int i = 0; i < n; i++)
    cout << ans[boy[i]] + 1 << ' ' << ans[girl[i]] + 1 << '\n';
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  input();
  solve();
  return 0;
}
