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

typedef unsigned long long ull;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<double, double> pdd;
const ull mod = 1e9 + 7;
#define REP(i,n) for(int i=0;i<(int)n;++i)

//debug
#define dump(x)  cerr << #x << " = " << (x) << endl;
#define debug(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << endl;

template<class S, class T> ostream& operator << (ostream& os, const pair<S, T> v){
  os << "(" << v.first << ", " << v.second << ")"; return os;
}
template<class T> ostream& operator << (ostream& os, const vector<T> v){
  for(int i = 0; i < (int)v.size(); i++){if(i > 0){os << " ";} os << v[i];} return os;
}
template<class T> ostream& operator << (ostream& os, const vector<vector<T>> v){
  for(int i = 0; i < (int)v.size(); i++){if(i > 0){os << endl;} os << v[i];} return os;
}

ll N;

bool consecutive(ll x){
	cout << "? ";
	REP(i, N){
		cout << x+i << " ";
	}
	cout << endl;
	string T;
	cin >> T;
	return (T=="Red");
}

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);

    cin >> N;

    if(N==1){
    	string T1, T2;
    	cout << "? 1" << endl;
    	cin >> T1;
    	cout << "? 2" << endl;
    	cin >> T2;
    	cout << "! ";
    	cout << (T1 == "Red" ? 'R' : 'B');
    	cout << (T2 == "Red" ? 'R' : 'B');
    	cout << endl;
    	return 0;
    }

    vector<ll> reds, blues;
    vector<int> res(2*N, -1);

    /*
    vector<bool> slide(N+1);
    REP(i, N+1){
    	cout << "? ";
    	REP(j, N){
    		cout << i+j+1 << " ";
    	}
    	cout << endl;
    	string T;
    	cin >> T;
    	slide[i] = (T == "Red");
    }
    //cout << slide << endl;

    ll idx;
    REP(i, N+1){
    	if(slide[i]!=slide[i+1]){
    		if(slide[i]){
    			res[i] = 1;
    			res[i+N] = 0;
    			reds.push_back(i);
    			blues.push_back(i+N);
    		}else{
    			res[i] = 0;
    			res[i+N] = 1;
    			reds.push_back(i+N);
    			blues.push_back(i);
    		}
    		idx = i;
    		break;
    	}
    }
    */

    ll lb = 1;
    ll rb = N+1;
    bool fl = consecutive(1);
    while(rb-lb>1){
    	ll md = (lb+rb)/2;
    	bool fm = consecutive(md);
    	if(fm==fl){
    		lb = md;
    	}else{
    		rb = md;
    	}
    }

    ll idx = lb-1;

    REP(i, 2*N){
    	if(i>idx && i<idx+N) continue;
    	cout << "? ";
    	REP(j, N-1){
    		cout << idx+j+2 << " ";
    	}
    	cout << i+1 << " ";
    	cout << endl;

    	string T;
    	cin >> T;
    	if(T == "Red"){
    		res[i] = 1;
    		reds.push_back(i);
    	}else{
    		res[i] = 0;
    		blues.push_back(i);
    	}
    	res[i] = (T=="Red" ? 1 : 0);
    }

    vector<ll> sample(N-1);
    REP(i, (N-1)/2) sample[i] = blues[i];
    REP(i, (N-1)/2) sample[i+(N-1)/2] = reds[i];

    //dump(idx)

    for(int i=idx+1;i<idx+N;i++){
    	cout << "? ";
    	REP(j, N-1){
    		cout << sample[j]+1 << " ";
    	}
    	cout << i+1 << " ";
    	cout << endl;
    	string T;
    	cin >> T;
    	if(T == "Red"){
    		res[i] = 1;
    		reds.push_back(i);
    	}else{
    		res[i] = 0;
    		blues.push_back(i);
    	}
    	res[i] = (T=="Red" ? 1 : 0);
    }

    cout << "! ";
    REP(i, 2*N){
    	cout << (res[i]==1 ? "R" : "B");
    }
    cout << endl;

    return 0;
}

Measured memory_bytes: 724