#include <bits/stdc++.h>
using namespace std;
long long nwd(long long a, long long b) { return !b ? a : nwd(b, a % b); }
inline int CEIL(int a, int b) { return a % b ? a / b + 1 : a / b; }
template <class T>
inline T sqr(const T& a) {
  return a * a;
}
vector<string> parse(string s) {
  string a;
  vector<string> wyn;
  for (int i = 0; i < ((int)s.size()); i++)
    if (s[i] != ' ')
      a += s[i];
    else if (!a.empty()) {
      wyn.push_back(a);
      a = "";
    }
  if (!a.empty()) wyn.push_back(a);
  return wyn;
}
int toi(char ch) { return int(ch) - int('0'); }
int chg(char ch) { return int(ch) - int('a'); }
int los(int m) { return (int)((double)m * (rand() / (RAND_MAX + 1.0))); }
long long wyn[60];
void dod(long long a, int x) {
  for (int i = 0; i < (61); i++) {
    if ((1LL << i) > a) continue;
    long long mask = (1LL << (i + 1)) - 1;
    long long a1 = a & (~mask);
    wyn[i] += (a1 / 2) * x;
    if (!(a & (1LL << i))) continue;
    wyn[i] += ((a & ((1LL << i) - 1)) + 1) * x;
  }
}
int main() {
  int n;
  long long a, b;
  scanf("%d", &n);
  while (n--) {
    long long d;
    cin >> a >> d;
    b = a + d - 1;
    dod(b, 1);
    dod(a - 1, -1);
  }
  for (int i = 0; i < (61); i++)
    if (wyn[i] % 2) {
      puts("tolik");
      return 0;
    }
  puts("bolik");
  return 0;
}
