#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
vector<int> todel[2];
struct seg {
  vector<int> f[N << 2];
  const int M = N << 1;
  bool d[N];
  void modify(int s, int t, int v) {
    for (s += M - 1, t += M + 1; s ^ t ^ 1; s >>= 1, t >>= 1) {
      if (~s & 1) f[s ^ 1].push_back(v);
      if (t & 1) f[t ^ 1].push_back(v);
    }
  }
  void del(int x, vector<int>& ans) {
    for (x += M; x; x >>= 1) {
      for (int v : f[x]) {
        if (!d[v]) {
          ans.push_back(v);
          d[v] = 1;
        }
      }
      f[x].clear();
    }
  }
};
struct tree {
  int h[N], nex[N], to[N], siz[N], fa[N], son[N], dep[N], pos[N], bl[N], M;
  seg T;
  void add(int a, int b) {
    M++;
    to[M] = b;
    nex[M] = h[a];
    h[a] = M;
  }
  void dfs(int x) {
    int i, mx = 0, k = 0;
    siz[x] = 1;
    for (i = h[x]; i; i = nex[i]) {
      fa[to[i]] = x;
      dep[to[i]] = dep[x] + 1;
      dfs(to[i]);
      siz[x] += siz[to[i]];
      if (siz[to[i]] > mx) {
        mx = siz[to[i]];
        k = to[i];
      }
    }
    son[x] = k;
  }
  void dfs(int x, int chain) {
    pos[x] = ++M;
    bl[x] = chain;
    if (son[x]) dfs(son[x], chain);
    for (int i = h[x]; i; i = nex[i]) {
      if (to[i] != son[x]) dfs(to[i], to[i]);
    }
  }
  void modify(int x, int y, int v) {
    while (bl[x] != bl[y]) {
      if (dep[bl[x]] < dep[bl[y]]) swap(x, y);
      T.modify(pos[bl[x]], pos[x], v);
      x = fa[bl[x]];
    }
    if (dep[x] > dep[y]) swap(x, y);
    if (dep[x] < dep[y]) T.modify(pos[x] + 1, pos[y], v);
  }
  void del(int x, vector<int>& ans) { T.del(pos[x], ans); }
  void pre(int n) {
    int i, x;
    for (i = 2; i <= n; i++) {
      scanf("%d", &x);
      add(x, i);
    }
    dfs(1);
    M = 0;
    dfs(1, 1);
  }
} t[2];
int main() {
  int n, i;
  scanf("%d", &n);
  t[0].pre(n);
  t[1].pre(n);
  for (i = 2; i <= n; i++) {
    t[1].modify(i, t[0].fa[i], i);
    t[0].modify(i, t[1].fa[i], i);
  }
  scanf("%d", &i);
  i++;
  t[1].T.d[i] = 1;
  todel[0].push_back(i);
  for (i = 1; i < (n << 1) - 1; i++) {
    puts(i & 1 ? "Blue" : "Red");
    todel[i & 1].clear();
    sort(todel[~i & 1].begin(), todel[~i & 1].end());
    for (int v : todel[~i & 1]) {
      printf("%d ", v - 1);
      t[~i & 1].del(v, todel[i & 1]);
    }
    putchar('\n');
    if (todel[i & 1].size() == 0) return 0;
  }
}
