#include <iostream>
#include <vector>
#include <string>
using namespace std;

//#define LOCAL 1

string answer;

string query(vector<int> V)
{
#if LOCAL
    int r = 0;
    int b = 0;
    for (int v: V)
        (answer[v]=='R' ? r : b)++;
    return r>b ? "Red" : "Blue";
#else
    cout<<"?";
    for (int v: V)
        cout<<" "<<v+1;
    cout<<endl;
    string r;
    cin>>r;
    return r;
#endif
}


int main()
{
    int N;
#if LOCAL
    cin>>answer;
    N = (int)answer.size()/2;
#else
    cin>>N;
#endif

    //  F+R = Red, F+B = Blue
    vector<int> F, R, B;

    vector<int> C0, C1, C2, C3;
    for (int i=0; i<N/2; i++)
        C0.push_back(i),
        C2.push_back(N+i);
    for (int i=N/2; i<N; i++)
        C1.push_back(i),
        C3.push_back(N+i);
    vector<int> Q = C0;
    Q.insert(Q.end(), C1.begin(), C1.end());
    string a0 = query(Q);
    Q = C0;
    Q.insert(Q.end(), C3.begin(), C3.end());
    string a1 = query(Q);
    if (a0=="Red" && a1=="Red")
    {
        //  C0+C1 = Red, C0+C3 = Red, C2+C3 = Blue, C2+C1 = Blue
        F = C3;
        R = C0;
        B = C2;
    }
    if (a0=="Red" && a1=="Blue")
    {
        //  C0+C1 = Red, C0+C3 = Blue, C2+C3 = Blue, C2+C1 = Red
        F = C0;
        R = C1;
        B = C3;
    }
    if (a0=="Blue" && a1=="Red")
    {
        //  C0+C1 = Blue, C0+C3 = Red, C2+C3 = Red, C2+C1 = Blue
        F = C0;
        R = C3;
        B = C1;
    }
    if (a0=="Blue" && a1=="Blue")
    {
        //  C0+C1 = Blue, C0+C3 = Blue, C2+C3 = Red, C2+C1 = Red
        F = C3;
        R = C2;
        B = C0;
    }

    //cout<<"---"<<endl;
    //for (int f: F)
    //    cout<<" "<<f;
    //cout<<endl;
    //for (int r: R)
    //    cout<<" "<<r;
    //cout<<endl;
    //for (int b: B)
    //    cout<<" "<<b;
    //cout<<endl;


    while (R.size()>1)
    {
        vector<int> C0, C1, C2, C3;
        int n = (int)R.size();
        for (int i=0; i<n/2; i++)
            C0.push_back(R[i]),
            C2.push_back(B[i]);
        for (int i=n/2; i<n; i++)
            C1.push_back(R[i]),
            C3.push_back(B[i]);
        vector<int> Q = F;
        Q.insert(Q.end(), C0.begin(), C0.end());
        Q.insert(Q.end(), C3.begin(), C3.end());
        string a0 = query(Q);
        Q = F;
        Q.insert(Q.end(), C2.begin(), C2.end());
        Q.insert(Q.end(), C1.begin(), C1.end());
        string a1 = query(Q);
        if (a0=="Red" && a1=="Red")
        {
            //  F+C0+C1 = Red, F+C0+C3 = Red, F+C2+C3 = Blue, F+C2+C1 = Red
            F.insert(F.end(), C2.begin(), C2.end());
            R = C1;
            B = C3;
        }
        if (a0=="Red" && a1=="Blue")
        {
            //  F+C0+C1 = Red, F+C0+C3 = Red, F+C2+C3 = Blue, F+C2+C1 = Blue
            F.insert(F.end(), C1.begin(), C1.end());
            R = C0;
            B = C2;
        }
        if (a0=="Blue" && a1=="Red")
        {
            //  F+C0+C1 = Red, F+C0+C3 = Blue, F+C2+C3 = Blue, F+C2+C1 = Red
            F.insert(F.end(), C0.begin(), C0.end());
            R = C1;
            B = C3;
        }
        if (a0=="Blue" && a1=="Blue")
        {
            //  F+C0+C1 = Red, F+C0+C3 = Blue, F+C2+C3 = Blue, F+C2+C1 = Blue
            F.insert(F.end(), C0.begin(), C0.end());
            R = C1;
            B = C3;
        }
    }

    //  0: red, 1: blue, 2: in F, 3: not in F
    vector<int> A(2*N, 3);
    for (int f: F)
        A[f] = 2;
    A[R[0]] = 0;
    A[B[0]] = 1;

    vector<int> iF;
    for (int i=0; i<2*N; i++)
        if (A[i]==3)
            iF.push_back(i);

    for (int i=0; i<2*N; i++)
        if (A[i]==2 ||  A[i]==3)
        {
            vector<int> Q = A[i]==2 ? iF : F;
            Q.push_back(i);
            A[i] = query(Q)=="Red" ? 0 : 1;
        }

    string ans;
    for (int a: A)
        ans += a==0 ? "R" : "B";
    cout<<"! "<<ans<<endl;
}


Measured memory_bytes: 1224