#include <bits/stdc++.h>
const int maxn = 2000010;
int n;
struct Point {
  int x, y;
} p[maxn];
int lm, nm;
struct Edge {
  int to, id;
  Edge *ne;
} el[maxn], *la[maxn], *cl = el;
int dg[maxn];
bool vs[maxn];
char ans[maxn];
int st[maxn], tp;
int In() {
  register char c;
  for (; c = getchar(), c != '-' && !isdigit(c);)
    ;
  register bool f = c == '-';
  register int s = f ? 0 : c - '0';
  for (; c = getchar(), isdigit(c);) s = s * 10 + c - '0';
  return f ? -s : s;
}
void ins(register int u, register int v, register int id) {
  *++cl = (Edge){v, id, la[u]}, la[u] = cl, ++dg[v];
  *++cl = (Edge){u, id, la[v]}, la[v] = cl, ++dg[u];
}
void dfs(int x) {
  for (Edge *i = la[x]; i; i = la[x]) {
    if (!vs[i->id]) {
      st[++tp] = x <= lm ? i->id : -i->id, vs[i->id] = 1;
      la[x] = la[x]->ne, dfs(i->to);
    } else
      la[x] = la[x]->ne;
  }
}
int main() {
  n = In();
  for (register int i = 1; i <= n; ++i) p[i] = (Point){In(), In() + 500000};
  for (register int i = 1; i <= n; ++i)
    lm < p[i].x ? lm = p[i].x : 0, nm < p[i].y ? nm = p[i].y : 0;
  for (register int i = 1; i <= n; ++i) ins(p[i].x, p[i].y, i);
  for (register int i = 1, j = n; i <= nm; ++i)
    if (dg[i] & 1) ins(i, 0, ++j);
  for (register int i = 1; i <= nm; ++i)
    if (la[i]) dfs(i);
  for (; tp; --tp) st[tp] > 0 ? ans[st[tp]] = 'r' : ans[-st[tp]] = 'b';
  ans[n + 1] = 0, puts(ans + 1);
  return 0;
}
