Problem: This is an interactive task.

We have 2N balls arranged in a row, numbered 1, 2, 3, ..., 2N from left to right, where N is an odd number. Among them, there are N red balls and N blue balls.

While blindfolded, you are challenged to guess the color of every ball correctly, by asking at most 210 questions of the following form:

* You choose any N of the 2N balls and ask whether there are more red balls than blue balls or not among those N balls.



Now, let us begin.

Constraints

* 1 \leq N \leq 99
* N is an odd number.



* * *



Example

Input




Output

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
int n,a,b;
vector<int> vec;
char s[5],res[666];
inline int Q1(int l,int r) {
    printf("? ");
    for (int i=l;i<=r;++i)
        printf("%d%c",i,i==r?'\n':' ');
    fflush(stdout);
    char s[5];scanf("%s",s);
    return 2-(s[0]=='R');
}
inline int Q2() {
    printf("? ");
    for (int i=0;i<(int)vec.size();++i)
        printf("%d%c",vec[i],i+1==(int)vec.size()?'\n':' ');
    fflush(stdout);
    char s[5];scanf("%s",s);
    return 2-(s[0]=='R');
}
inline void go(int p,int x) {
    char ch=(x==1)?'R':'B';
    res[p]=ch;
}
int main()
{
    scanf("%d",&n);
    a=Q1(1,n);
    b=3-a;
    go(1,a);
    go(n+n,b);
    int left=1,right=n+1;
    while (left+1<right) {
        int mid=(left+right)>>1;
        int c=Q1(mid,mid+n-1);
        if (a==c) left=mid;
        else right=mid;
    }
    for (int i=right;i<=left+n-1;++i) vec.push_back(i);
    for (int i=1;i<right;++i) {
        vec.push_back(i);
        go(i,Q2());
        vec.pop_back();
    }
    for (int i=left+n;i<=n+n;++i) {
        vec.push_back(i);
        go(i,Q2());
        vec.pop_back();
    }
    int c1=n/2,c2=n/2;
    vec.clear();
    go(left,a);
    go(left+n,b);
    for (int i=1;i<left;++i) {
        if (c1&&res[i]=='R') vec.push_back(i),--c1;
        if (c2&&res[i]=='B') vec.push_back(i),--c2;
    }
    for (int i=left+n+1;i<=n+n;++i) {
        if (c1&&res[i]=='R') vec.push_back(i),--c1;
        if (c2&&res[i]=='B') vec.push_back(i),--c2;
    }
    for (int i=right;i<=left+n-1;++i) {
        vec.push_back(i);
        go(i,Q2());
        vec.pop_back();
    }
    printf("! ");
    puts(res+1);
    fflush(stdout);
    return 0;
}