#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> ii;
typedef pair<ld,ld> id;
typedef tuple<ll,ll,ll> tl;
typedef tuple<ll,ll,ll,ll> ql;

#define FOR(i, a, b) for(ll i=(a); i<=(b); i++)
#define ROF(i, a, b) for(ll i=(a); i>=(b); i--)
#define MEM(x, v) memset(x, v, sizeof(x))
#define FILL(x, n, v) fill(x, x+n, v);
#define ALL(x) x.begin(), x.end()
#define FAST ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);

#define f first
#define s second
#define ins insert
#define e emplace
#define eb emplace_back
#define ef emplace_front
#define p push
#define pf push_front
#define pb push_back
#define mp make_pair
#define ub upper_bound
#define lb lower_bound
#define ft front
#define bk back
#define pp pop
#define ppb pop_back
#define ppf pop_front

#define db cout<<"YEET\n";
#define ct(x) cout<<x<<'\n';

const ll MOD = 1e9+7; //998244353
const ll MAXN = 2e5+5;
const ll INF = 1e18;
const ld PI = acos((ld)-1);

void query(deque<ll> output){
    ll sz = (ll)output.size()-1;
    cout << "?";
    FOR(i,0,sz){
        cout << " " << output[i];
    }
    cout << '\n';
    cout.flush();
    return;
}

int main(){
    FAST
    ll n;
    char ans[205];
    MEM(ans,'-');
    cin >> n;
    deque<ll> d;
    FOR(i,1,n) d.pb(i);

    bool red=0, blue=0;
    string chk;

    query(d);
    cin >> chk;
    if (chk == "Red") red=1;
    else blue=1;

    ll l=1, r=n;
    ll cnt=n;

    if (n<50){
        while (1){
            cnt++;
            d.ppf();
            d.pb(cnt);
            query(d);
            cin >> chk;
    
            if (chk == "Blue" && red){
                ans[cnt] = 'B';
                break;
            } else if (chk == "Red" && blue){
                ans[cnt] = 'R';
                break;
            }
        }
    } else {
        while (l<r){
            d.clear();
            if (red) {
                ll mid = (l+r)/2;
                FOR(i,mid,mid+n-1){
                    d.pb(i);
                }
                query(d);
                cin >> chk;
                if (chk == "Red") l = mid+1;
                else r = mid;
            } else {
                ll mid = (l+r)/2;
                FOR(i,mid,mid+n-1){
                    d.pb(i);
                }
                query(d);
                cin >> chk;
                if (chk == "Blue") l = mid+1;
                else r=mid;
            }
        }
        d.clear();
        FOR(i,l,l+n-1) d.pb(i);
    }

    ll rangel = d.ft(), ranger = d.bk();
    FOR(i,1,2*n){
        if (i < rangel || i > ranger){
            d.ppb();
            d.pb(i);
            query(d);
            cin >> chk;

            if (chk == "Red") ans[i] = 'R';
            else ans[i] = 'B';
        }
    }

    d.clear();
    ll bcnt=0, rcnt=0, f1, f2;
    bool first1=0, first2=0;
    FOR(i,1,2*n){
        if (i == ranger) continue;
        if (ans[i] == 'B') {
            bcnt++;
            if (!first1) f1 = i, first1=1;
            else d.pb(i);
        } else if (ans[i] == 'R') {
            rcnt++;
            if (!first2) f2 = i, first2=1;
            else d.pb(i);
        }
    }
    if (rcnt>bcnt){
        d.pb(f1); d.pb(f2);
    } else {
        d.pb(f2); d.pb(f1);
    }

    FOR(i,1,2*n){
        if (ans[i] == '-'){
            d.ppb();
            d.pb(i);
            query(d);
            cin >> chk;
            if (chk == "Red") ans[i] = 'R';
            else ans[i] = 'B';
        }
    }

    cout << "! ";
    FOR(i,1,2*n){
        cout << ans[i];
    }
    cout.flush();
}

Measured memory_bytes: 724