#include <bits/stdc++.h>
using namespace std;
bool checkWin(long long s, long long e) {
  if (e & 1) {
    return (s & 1) == 0;
  }
  long long e2 = e / 2;
  long long e4 = e2 / 2;
  if (s > e2) {
    return ((e - s) & 1) == 1;
  } else if (s > e4) {
    return true;
  } else {
    return checkWin(s, e4);
  }
}
bool checkLose(long long s, long long e) {
  long long e2 = e / 2;
  if (s > e2) {
    return true;
  }
  return checkWin(s, e2);
}
const int N = 1e5 + 5;
long long s[N];
long long e[N];
int dp[N][2];
int f[N][2];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lld%lld", &s[i], &e[i]);
    f[i][0] = checkWin(s[i], e[i]);
    f[i][1] = checkLose(s[i], e[i]);
  }
  dp[n][0] = checkWin(s[n], e[n]);
  dp[n][1] = checkLose(s[n], e[n]);
  int cur[2];
  for (int i = n - 1; i >= 1; i--) {
    cur[0] = checkWin(s[i], e[i]);
    cur[1] = checkLose(s[i], e[i]);
    int idxWin = dp[i + 1][0];
    int idxLost = dp[i + 1][1];
    dp[i][0] = cur[idxWin];
    dp[i][1] = cur[idxLost];
  }
  printf("%d %d\n", dp[1][0], dp[1][1]);
  return 0;
}
