#include <bits/stdc++.h>
const int N = 200005;
int n;
std::vector<int> number[2];
struct _tree {
  int head[N], nxt[N], top[N], f[N], dep[N];
  int dfn[N], son[N], size[N], idx;
  int id;
  void link(int x, int y) { nxt[y] = head[x], head[x] = y; }
  int dfs0(int x) {
    for (int i = head[x]; i; i = nxt[i]) {
      f[i] = x, dep[i] = dep[x] + 1;
      size[x] += dfs0(i);
      if (size[son[x]] < size[i]) son[x] = i;
    }
    return ++size[x];
  }
  void dfs1(int x) {
    dfn[x] = ++idx;
    if (son[x]) top[son[x]] = top[x], dfs1(son[x]);
    for (int i = head[x]; i; i = nxt[i])
      if (i != son[x]) top[i] = i, dfs1(i);
  }
  std::vector<int> a[N << 2];
  void modify(int L, int R, int val, int o = 1, int l = 1, int r = n) {
    if (L <= l && R >= r) {
      a[o].emplace_back(val);
      return;
    }
    int mid = l + r >> 1;
    if (L <= mid) modify(L, R, val, o << 1, l, mid);
    if (R > mid) modify(L, R, val, o << 1 | 1, mid + 1, r);
  }
  bool removed[N];
  void remove(int x) {
    if (removed[x]) return;
    removed[x] = 1, number[1].emplace_back(x);
  }
  void boom(int pos, int o = 1, int l = 1, int r = n) {
    for (int t : a[o]) remove(t);
    a[o].clear();
    int mid = l + r >> 1;
    if (l == r) return;
    if (pos <= mid)
      boom(pos, o << 1, l, mid);
    else
      boom(pos, o << 1 | 1, mid + 1, r);
  }
  void remove(int x, int y, int z) {
    while (top[x] != top[y]) {
      if (dep[top[x]] > dep[top[y]]) std::swap(x, y);
      modify(dfn[top[y]], dfn[y], z);
      y = f[top[y]];
    }
    if (dfn[x] < dfn[y]) std::swap(x, y);
    if (dfn[y] != dfn[x]) modify(dfn[y] + 1, dfn[x], z);
  }
  void init() {
    for (int i = 2, x; i <= n; ++i) std::cin >> x, link(x, i);
    dfs0(1), top[1] = 1, dfs1(1);
  }
} tree[2];
int main() {
  std::ios::sync_with_stdio(0), std::cin.tie(0);
  std::cin >> n;
  tree[0].id = 0, tree[1].id = 1;
  tree[0].init(), tree[1].init();
  for (int i = 2; i <= n; ++i) tree[0].remove(tree[1].f[i], i, i - 1);
  for (int i = 2; i <= n; ++i) tree[1].remove(tree[0].f[i], i, i - 1);
  int x;
  std::cin >> x;
  number[1].emplace_back(x);
  tree[1].removed[x] = 1;
  for (int i = 1; number[1].size(); i ^= 1) {
    std::swap(number[0], number[1]);
    std::sort(number[0].begin(), number[0].end());
    std::cout << (i ? "Blue" : "Red") << '\n';
    for (int t : number[0]) std::cout << t << ' ';
    std::cout << '\n';
    for (int t : number[0]) tree[i ^ 1].boom(tree[i ^ 1].dfn[t + 1]);
    number[0].clear();
  }
  return 0;
}
