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

int main() {
    int n; cin >> n;
    string ans = string(n + n, ' ');
    int k = 1;
    cout << "?";
    for (int i = 1; i <= n; ++i) cout << ' ' << i;
    cout << endl;
    string s; cin >> s;
    int f = s == "Red";
    for (int d = 10; d >= 0; --d) {
        if (k + (1 << d) > n + 1) continue;
        cout << "?";
        for (int i = k + (1 << d); i < k + (1 << d) + n; ++i) cout << ' ' << i;
        cout << endl;
        cin >> s;
        if ((s == "Red") == f) k += (1 << d);
    }
    assert(k + 1 <= n + 1);
    for (int i = k + 1, z = f; i <= n + 1; ++i) {
        cout << "?";
        for (int j = i; j < i + n; ++j) cout << ' ' << j;
        cout << endl;
        string s; cin >> s;
        int g = s == "Red";
        if (z == 0 && g == 1) {
            int rd = i + n - 1;
            ans[i - 2] = 'B';
            ans[rd - 1] = 'R';
            for (int k = 1; k <= n + n; ++k) {
                if (ans[k - 1] == ' ' && (k < i - 1 || k > rd)) {
                    cout << "?";
                    for (int j = i; j < rd; ++j) cout << ' ' << j;
                    cout << ' ' << k << endl;
                    string s; cin >> s;
                    ans[k - 1] = s[0];
                }
            }
            vector<int> r, b;
            for (int k = 1; k <= n + n; ++k) {
                if (ans[k - 1] == 'R') r.push_back(k);
                else if (ans[k - 1] == 'B') b.push_back(k);
            }
            assert(r.size() == (n - 1) / 2 + 1 && b.size() == (n - 1) / 2 + 1);
            for (int k = 1; k <= n + n; ++k) {
                if (ans[k - 1] == ' ') {
                    cout << "?";
                    for (int j = 0; j < (n - 1) / 2; ++j) cout << ' ' << r[j] << ' ' << b[j];
                    cout << ' ' << k << endl;
                    string s; cin >> s;
                    ans[k - 1] = s[0];
                }
            }
            cout << "! " << ans << endl;
            return 0;
        } else if (z == 1 && g == 0) {
            int bl = i + n - 1;
            ans[i - 2] = 'R';
            ans[bl - 1] = 'B';
            for (int k = 1; k <= n + n; ++k) {
                if (ans[k - 1] == ' ' && (k < i - 1 || k > bl)) {
                    cout << "?";
                    for (int j = i; j < bl; ++j) cout << ' ' << j;
                    cout << ' ' << k << endl;
                    string s; cin >> s;
                    ans[k - 1] = s[0];
                }
            }
            vector<int> r, b;
            for (int k = 1; k <= n + n; ++k) {
                if (ans[k - 1] == 'R') r.push_back(k);
                else if (ans[k - 1] == 'B') b.push_back(k);
            }
            assert(r.size() == (n - 1) / 2 + 1 && b.size() == (n - 1) / 2 + 1);
            for (int k = 1; k <= n + n; ++k) {
                if (ans[k - 1] == ' ') {
                    cout << "?";
                    for (int j = 0; j < (n - 1) / 2; ++j) cout << ' ' << r[j] << ' ' << b[j];
                    cout << ' ' << k << endl;
                    string s; cin >> s;
                    ans[k - 1] = s[0];
                }
            }
            cout << "! " << ans << endl;
            return 0;
        }
        z = g;
    }
    assert(false);
}


Measured memory_bytes: 724