#include <bits/stdc++.h>
using namespace std;
const int N = 200000;
struct edge {
  int from, to, nxt, num, col;
} e[N * 4 + 100];
int x[N], y[N], lst[N * 2 + 100];
int vis[N * 4 + 100], du[N * 4 + 100], head[N * 2 + 100];
int n, tail = 0, tot = 0;
char ans[N * 2 + 100];
stack<int> s;
inline int read() {
  int x = 0;
  char c = getchar();
  while (!isdigit(c)) c = getchar();
  while (isdigit(c)) {
    x = x * 10 + c - '0';
    c = getchar();
  }
  return x;
}
void addedge(int x, int y, int z) {
  e[tail].from = x;
  e[tail].to = y;
  e[tail].num = z;
  e[tail].col = 0;
  e[tail].nxt = head[x];
  head[x] = tail++;
}
void dfs(int u) {
  vis[u] = 1;
  for (int i = head[u]; i != -1; i = head[u]) {
    head[u] = e[i].nxt;
    if (e[i].col) continue;
    e[i ^ 1].col = 1;
    dfs(e[i].to);
    s.push(e[i].num);
  }
}
int main() {
  n = read();
  for (int i = (1); i <= ((N << 1)); i++) head[i] = -1;
  for (int i = (1); i <= (n); i++) {
    x[i] = read();
    y[i] = read();
    du[x[i]]++;
    du[y[i] + N]++;
    addedge(x[i], y[i] + N, i);
    addedge(y[i] + N, x[i], i);
  }
  for (int i = (1); i <= ((N << 1)); i++)
    if (du[i] & 1) lst[++tot] = i;
  for (int i = 1; i <= tot; i += 2) {
    addedge(lst[i], lst[i + 1], 0);
    addedge(lst[i + 1], lst[i], 0);
  }
  memset(vis, 0, sizeof(vis));
  for (int i = (1); i <= (tot); i++) {
    if (!vis[lst[i]]) {
      dfs(lst[i]);
      int flag = 0;
      while (!s.empty()) {
        flag ^= 1;
        int now = s.top();
        if (now) ans[now] = flag ? 'r' : 'b';
        s.pop();
      }
    }
  }
  for (int i = (1); i <= ((N << 1)); i++) {
    if (!vis[i]) {
      dfs(i);
      int flag = 0;
      while (!s.empty()) {
        flag ^= 1;
        int now = s.top();
        if (now) ans[now] = flag ? 'r' : 'b';
        s.pop();
      }
    }
  }
  puts(ans + 1);
  return 0;
}
