#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200010;
const int MAXX = 200010;
const int MAXY = 200010;
const int MAXV = MAXX + MAXY;
const int MAXE = MAXV + MAXN;
vector<pair<int, int> > edges[MAXV];
int ptr[MAXV];
int val[MAXE];
vector<int> xo, yo;
void dfs(int v, int lev) {
  for (; ptr[v] < edges[v].size(); ptr[v]++) {
    int u = edges[v][ptr[v]].first;
    int x = edges[v][ptr[v]].second;
    if (val[x] == -1) {
      val[x] = lev;
      dfs(u, lev ^ 1);
    }
  }
}
int main() {
  int n;
  cin >> n;
  int mxy = 0;
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    edges[x].push_back(pair<int, int>(y + MAXX, i));
    edges[y + MAXX].push_back(pair<int, int>(x, i));
    val[i] = -1;
  }
  int ecnt = n;
  for (int i = 1; i < MAXV; i++) {
    if (i == MAXX - 1 || i == MAXX + MAXY - 1) continue;
    if (edges[i].size() % 2 == 1) {
      val[ecnt] = -1;
      if (i < MAXX) {
        edges[i].push_back(pair<int, int>(MAXX - 1, ecnt));
        edges[MAXX - 1].push_back(pair<int, int>(i, ecnt));
      } else {
        edges[i].push_back(pair<int, int>(MAXX + MAXY - 1, ecnt));
        edges[MAXX + MAXY - 1].push_back(pair<int, int>(i, ecnt));
      }
      ecnt++;
    }
  }
  if (edges[MAXX + MAXY - 1].size() % 2 == 1) {
    val[ecnt] = -1;
    edges[MAXX - 1].push_back(pair<int, int>(MAXX + MAXY - 1, ecnt));
    edges[MAXX + MAXY - 1].push_back(pair<int, int>(MAXX - 1, ecnt));
  }
  for (int i = 1; i < MAXV; i++)
    if (edges[i].size() > 0) dfs(i, 0);
  for (int i = 0; i < n; i++)
    if (val[i] == 1)
      cout << 'b';
    else
      cout << 'r';
  cout << "\n";
}
