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 <iostream>
#include <vector>

using namespace std;

bool query (const vector<int> &v) {
  cout << "? ";
  for (int u : v) {
    cout << u + 1 << " ";
  }
  cout << endl;

  string ans;
  cin >> ans;
  if (ans[0] == '-') exit(0);
  return ans[0] == 'R';
}

const int MAX_N = 205;

char str [MAX_N];
int insep [MAX_N];

int n;
bool askpre (int k) {
  vector<int> q;
  for (int i = 0; i < k; i++) {
    q.push_back(i);
  }

  for (int i = k; i < n; i++) {
    q.push_back(i + n);
  }

  return query(q);
}

int main () {
  ios::sync_with_stdio(false);
  
  cin >> n;

  bool orig = askpre(0);
  int ans = 0; // a thing that has the same as orig
  for (int k = 64; k != 0; k /= 2) {
    if (ans + k < n) {
      if (askpre(ans + k) == orig) {
        ans += k;
      }
    }
  }

  vector<int> sep; // the intersection of askpre(ans) and askpre(ans + 1)
  for (int i = 0; i < ans; i++) {
    sep.push_back(i);
    insep[i] = 1;
  }
  for (int i = ans + 1; i < n; i++) {
    sep.push_back(i + n);
    insep[i + n] = 1;
  }

  // query the non-sep things;
  for (int i = 0; i < 2 * n; i++) {
    if (!insep[i]) {
      sep.push_back(i);
      if (query(sep)) {
        str[i] = 'R';
      } else {
        str[i] = 'B';
      }
      sep.pop_back();
    }
  }

  sep.clear(); // build a new separator
  for (int i = 0; i < 2 * n; i++) {
    if (str[i] == 'R' && (int) sep.size() < n / 2) {
      sep.push_back(i);
    }
  }

  for (int i = 0; i < 2 * n; i++) {
    if (str[i] == 'B' && (int) sep.size() < 2 * (n / 2)) {
      sep.push_back(i);
    }
  }

  for (int i = 0; i < 2 * n; i++) {
    if (insep[i]) {
      sep.push_back(i);
      if (query(sep)) {
        str[i] = 'R';
      } else {
        str[i] = 'B';
      }
      sep.pop_back();      
    }
  }

  cout << "! ";
  for (int i = 0; i < 2 * n; i++) {
    cout << str[i];
  }
  cout << endl;
}