#include <bits/stdc++.h>
 
#define int long long
//#define endl '\n'
 
#define pii pair<int, int>
 
#define x1 x1228
#define y1 y1228
 
#define left left228
#define right right228
 
#define pb push_back
#define eb emplace_back
 
#define mp make_pair                                                                
                                                                                                                                        
#define ff first                                                                  
#define ss second   
 
#define matr vector<vector<int> > 
 
#define all(x) x.begin(), x.end()
 
 
using namespace std;
typedef long long ll; 
typedef long double ld; 
                                                                                                   
const int maxn = 3e5 + 7, mod = 998244353, MAXN = 1e6 + 7;
const double eps = 1e-9;
const ll inf = 1e18; 
mt19937 rnd(time(0));
int ask(vector<int> a) {
    cout << "? "; 
    for (auto v : a) cout << v << " "; 
    cout << endl; 
    string s; cin >> s; 
    if (s[0] == 'R') return 0;
    return 1;
}         
int n; 
int used[maxn]; 
char ans[maxn]; 

int get(int x) {
    vector<int> p;
    for (int i = x; i < x + n; ++i) p.pb(i); 
    return ask(p); 
}

vector<int> find_null(int ptr) {
    int l = 1; 
    int m; 
    int r = n + 1; 
    while (l + 1 < r) {
        m = (l + r) / 2; 
        if (get(m) == ptr) l = m;
        else r = m;  
    }    
    vector<int> eq;
    for (int i = 0; i < n - 1; ++i) {
        eq.pb(r + i); 
    }
    return eq; 
}

void solve() { 
    cin >> n;
    vector<int> q; 
    for (int i = 1; i <= n; ++i) {
        q.pb(i); 
    }    
    int ptr = ask(q); 
    vector<int> eq = find_null(ptr);
    for (auto v : eq) used[v] = 1; 
    for (int i = 1; i <= 2 * n; ++i) {
        if (!used[i]) {
            eq.pb(i); 
            int t = ask(eq);
            if (t == 0) {
                ans[i] = 'R'; 
            }  else {
                ans[i] = 'B'; 
            }
            eq.pop_back(); 
        }
    }
    vector<int> ms;
    int R = 0;
    int B = 0; 
    for (int i = 1; i <= 2 * n; ++i) {
        if (!used[i]) {
            if (ans[i] == 'R') {
                if (R != (n - 1) / 2) {
                    ++R; 
                    ms.pb(i); 
                }
            } else {
                if (B != (n - 1) / 2) {
                    ++B; 
                    ms.pb(i); 
                }
            }
        }        
    }
    for (int i = 1; i <= 2 * n; ++i) {
        if (used[i]) {
            ms.pb(i); 
            int t = ask(ms);
            if (t == 0) ans[i] = 'R'; 
            else ans[i] = 'B'; 
            ms.pop_back(); 
        }        
    }
//    freopen("TASK.out", "w", stdout); 
    cout << "! ";
    for (int i = 1; i <= 2 * n; ++i) cout << ans[i]; 
    cout << endl; 
}                                   
   
signed main() {
#ifdef LOCAL1
    freopen("TASK.in", "r", stdin);
    freopen("TASK.out", "w", stdout);
#else 
    
#endif // LOCAL
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.precision(20); 
    cout << fixed; 
    int t = 1; 
    for (int i = 0; i < t; ++i) {              
        solve();
    }
    return 0;
}  

Measured memory_bytes: 724