#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int win(long long s, long long e) {
  if (e % 2 == 1) {
    if (s % 2 == 1)
      return 0;
    else
      return 1;
  } else {
    if (2 * s > e) {
      if (s % 2 == 1)
        return 1;
      else
        return 0;
    } else if (2 * s <= e && 4 * s > e) {
      return 1;
    } else
      return win(s, e / 4);
  }
}
int lose(long long s, long long e) {
  if (2 * s > e)
    return 1;
  else
    return win(s, e / 2);
}
int Win[N], Lose[N];
int get_lose(int x);
int get_win(int x);
int get_win(int x) {
  if (x == 1) return Win[1];
  return Win[x] ? get_lose(x - 1) : get_win(x - 1);
}
int get_lose(int x) {
  if (x == 1) return Lose[1];
  return Lose[x] ? get_lose(x - 1) : get_win(x - 1);
}
void io() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
}
int main(int argc, char const *argv[]) {
  io();
  int t;
  cin >> t;
  long long s, e;
  for (int i = 1; i <= t; i++) {
    cin >> s >> e;
    Win[i] = win(s, e);
    Lose[i] = lose(s, e);
  }
  cout << get_win(t) << " " << get_lose(t) << endl;
  return 0;
}
