#include <bits/stdc++.h>
using namespace std;
const int N = 200005, V = 400005, E = 600005;
template <class T>
void read(T &x) {
  int sgn = 1;
  char ch;
  x = 0;
  for (ch = getchar(); (ch < '0' || ch > '9') && ch != '-'; ch = getchar())
    ;
  if (ch == '-') ch = getchar(), sgn = -1;
  for (; '0' <= ch && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
  x *= sgn;
}
template <class T>
void write(T x) {
  if (x < 0)
    putchar('-'), write(-x);
  else if (x < 10)
    putchar(x + '0');
  else
    write(x / 10), putchar(x % 10 + '0');
}
struct edge {
  int to, nxt, mask;
} graph[E << 1];
int head[V], deg[V], cnt = 0;
void addedge(int u, int v) {
  edge e = {v, head[u], 0};
  graph[head[u] = cnt++] = e;
}
void dfs(int u) {
  for (; ~head[u];) {
    int i = head[u];
    head[u] = graph[head[u]].nxt;
    if (!graph[i].mask) {
      graph[i].mask = 1, graph[i ^ 1].mask = 2;
      dfs(graph[i].to);
    }
  }
}
int n, cnt1 = 0, cnt2 = 0, x[N], y[N];
int main() {
  read(n);
  for (int i = 1; i <= n; i++) {
    read(x[i]), read(y[i]);
    cnt1 = max(cnt1, x[i]), cnt2 = max(cnt2, y[i]);
  }
  for (int i = 1; i <= cnt1 + cnt2; i++) head[i] = -1, deg[i] = 0;
  for (int i = 1; i <= n; i++) {
    addedge(x[i], y[i] + cnt1);
    addedge(y[i] + cnt1, x[i]);
    deg[x[i]]++, deg[y[i] + cnt1]++;
  }
  for (int i = 1; i <= cnt1 + cnt2; i++) {
    if (deg[i] & 1) addedge(0, i), addedge(i, 0);
  }
  for (int i = 0; i <= cnt1 + cnt2; i++) dfs(i);
  for (int i = 0; i < n; i++) {
    if (graph[i << 1].mask == 1)
      putchar('r');
    else
      putchar('b');
  }
  putchar('\n');
  return 0;
}
