#include <bits/stdc++.h>
using namespace std;
const int N = 4e5 + 10;
vector<int> g[N];
map<int, int> mpx, mpy;
map<pair<int, int>, int> id;
int from[N], to[N], cur[N];
bool mark[N], vis[N];
vector<int> vv;
int cntx, cnty;
char ans[N];
void dfs(int v) {
  vis[v] = 1;
  while (cur[v] < g[v].size()) {
    int i = g[v][cur[v]++];
    int u = from[i] + to[i] - v;
    if (!mark[i]) {
      mark[i] = 1;
      dfs(u);
    }
  }
  vv.push_back(v);
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0, x, y; i < n; ++i) {
    scanf("%d%d", &x, &y);
    if (!mpx.count(x)) mpx[x] = cntx++;
    if (!mpy.count(y)) mpy[y] = cnty++;
    from[i] = mpx[x];
    to[i] = mpy[y] + n;
    id[make_pair(from[i], to[i])] = i;
    id[make_pair(to[i], from[i])] = i;
    g[from[i]].push_back(i);
    g[to[i]].push_back(i);
  }
  int m = n;
  for (int i = 0; i < 2 * n; ++i) {
    if (g[i].size() & 1) {
      from[m] = i;
      to[m] = N - 1;
      if (i >= n) to[m]--;
      g[from[m]].push_back(m);
      g[to[m]].push_back(m);
      m++;
    }
  }
  if (g[N - 1].size() & 1) dfs(N - 1);
  if (g[N - 2].size() & 1) dfs(N - 2);
  for (int i = 0; i < cntx; ++i)
    if (!vis[i]) dfs(i);
  for (int i = 0; i + 1 < vv.size(); ++i)
    if (id.count(make_pair(vv[i], vv[i + 1]))) {
      if (i & 1)
        ans[id[make_pair(vv[i], vv[i + 1])]] = 'r';
      else
        ans[id[make_pair(vv[i], vv[i + 1])]] = 'b';
    }
  ans[n] = 0;
  puts(ans);
  return 0;
}
