#include <bits/stdc++.h>

using namespace std;


using int64 = long long;
const int mod = 998244353;

const int64 infll = (1LL << 62) - 1;
const int inf = (1 << 30) - 1;

template< typename T1, typename T2 >
ostream &operator<<(ostream &os, const pair< T1, T2 > &p) {
  os << p.first << " " << p.second;
  return os;
}

template< typename T1, typename T2 >
istream &operator>>(istream &is, pair< T1, T2 > &p) {
  is >> p.first >> p.second;
  return is;
}

template< typename T >
ostream &operator<<(ostream &os, const vector< T > &v) {
  for(int i = 0; i < (int) v.size(); i++) {
    os << v[i] << (i + 1 != v.size() ? " " : "");
  }
  return os;
}

template< typename T >
istream &operator>>(istream &is, vector< T > &v) {
  for(T &in : v) is >> in;
  return is;
}

template< typename T1, typename T2 >
inline bool chmax(T1 &a, T2 b) { return a < b && (a = b, true); }

template< typename T1, typename T2 >
inline bool chmin(T1 &a, T2 b) { return a > b && (a = b, true); }

template< typename T = int64 >
vector< T > make_v(size_t a) {
  return vector< T >(a);
}

template< typename T, typename... Ts >
auto make_v(size_t a, Ts... ts) {
  return vector< decltype(make_v< T >(ts...)) >(a, make_v< T >(ts...));
}

template< typename T, typename V >
typename enable_if< is_class< T >::value == 0 >::type fill_v(T &t, const V &v) {
  t = v;
}

template< typename T, typename V >
typename enable_if< is_class< T >::value != 0 >::type fill_v(T &t, const V &v) {
  for(auto &e : t) fill_v(e, v);
}

template< typename F >
struct FixPoint : F {
  FixPoint(F &&f) : F(forward< F >(f)) {}

  template< typename... Args >
  decltype(auto) operator()(Args &&... args) const {
    return F::operator()(*this, forward< Args >(args)...);
  }
};

template< typename F >
inline decltype(auto) MFP(F &&f) {
  return FixPoint< F >{forward< F >(f)};
}

bool ask(const vector< int > &s) {
  cout << "? ";
  for(int k = 0; k < s.size(); k++) {
    if(k) cout << " ";
    cout << s[k] + 1;
  }
  cout << endl;
  string t;
  cin >> t;
  return t == "Red";
}


int main() {
  int N;
  cin >> N;

  if(N == 1) {
    auto x = ask({0});
    if(x) {
      cout << "! RB\n";
    } else {
      cout << "! BR\n";
    }
    return 0;
  }


  int pre = -1;
  vector< char > ans(2 * N);

  auto solve = [&](char L, int left, int right, char R) {
    // [left, right]
    if(left > right) right += 2 * N;

    for(int i = left; i <= right; i++) {
      vector< int > que;
      for(int j = left - 1; j <= right + 1; j++) {
        if(i == j) continue;
        que.emplace_back((j + 2 * N) % (2 * N));
      }
      auto ret = ask(que);

      if(ret) {
        ans[i % (2 * N)] = 'B';
      } else {
        ans[i % (2 * N)] = 'R';
      }
    }
  };


  vector< int > latte;
  for(int i = 0; i < N; i++) latte.emplace_back(i);
  pre = ask(latte);
  int ok = 0, ng = N;
  while(ng - ok > 1) {
    int mid = (ok + ng) / 2;
    vector< int > malta;
    for(int i = 0; i < N; i++) {
      malta.emplace_back((i + mid) % (2 * N));
    }
    if(pre == ask(malta)) ok = mid;
    else ng = mid;
  }


  int i = ok + 1;
  int ret = pre ^1;

  if(ret) {
    ans[i - 1] = 'B';
    ans[i + N - 1] = 'R';
    solve('B', i, i + N - 2, 'R');
    solve('R', i + N, i - 2, 'B');
  } else {
    ans[i - 1] = 'R';
    ans[i + N - 1] = 'B';
    solve('R', i, i + N - 2, 'B');
    solve('B', i + N, i - 2, 'R');
  }


  cout << "! ";
  for(auto &t : ans) cout << t;
  cout << endl;
}







Measured memory_bytes: 724