#include <bits/stdc++.h>
using namespace std;
int n;
vector<pair<int, int> > ps;
vector<vector<int> > fto;
vector<multiset<int> > g;
vector<int> ans;
int cnt = 0;
void dfs(int v) {
  while (!g[v].empty()) {
    int q = *g[v].begin();
    g[v].erase(g[v].begin());
    g[q].erase(g[q].find(v));
    dfs(q);
  }
  ans[v] = ((cnt++) & 1) + 1;
}
int main() {
  ios_base::sync_with_stdio(false);
  int m;
  cin >> m;
  n = 2 * m;
  g.resize(n);
  fto.resize(n);
  ans.assign(n, -1);
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    a--, b--;
    ps.emplace_back(a, b);
    g[2 * i].insert(2 * i + 1);
    g[2 * i + 1].insert(2 * i);
    g[a].insert(b);
    g[b].insert(a);
  }
  for (int i = 0; i < n; i++)
    if (ans[i] < 0) dfs(i);
  for (int i = 0; i < m; i++)
    cout << ans[ps[i].first] << " " << ans[ps[i].second] << "\n";
  return 0;
}
