#include <bits/stdc++.h>
using namespace std;
int a[310], now[310], n, T, t;
int ans[310], p[310];
int get(int l, int r) {
  printf("? %d %d\n", l, r);
  fflush(stdout);
  int x;
  scanf("%d", &x);
  return x;
}
int main() {
  scanf("%d%d", &n, &t);
  int init = t;
  if (n == 1) {
    printf("! %d\n", t);
    fflush(stdout);
    return 0;
  }
  for (int i = 1; i < n; i++) {
    int x;
    bool flag = 0;
    for (int j = 1; j <= 30; j++) {
      T++;
      x = get(i + 1, n);
      for (int j = 1; j < i; j++) now[j] ^= 1;
      if (n - t == x) {
        t = x;
        continue;
      }
      t = n - t;
      for (int j = 1; j < i; j++) t -= now[j];
      for (int j = 1; j < i; j++) t += (now[j] ^= 1);
      assert(t != x);
      if (t > x)
        now[i] = 0;
      else
        now[i] = 1;
      a[i] = now[i] ^ (T & 1) ^ 1;
      flag = 1;
      t = x;
      break;
    }
    if (!flag) {
      int num = 0;
      for (int j = 1; j < i; j++) num += now[j];
      if (num == i / 2)
        now[i] = 0;
      else
        now[i] = 1;
      a[i] = now[i] ^ (T & 1);
    }
  }
  for (int i = 1; i < n; i++) init -= a[i];
  a[n] = init;
  printf("! ");
  for (int i = 1; i <= n; i++) printf("%d", a[i]);
  puts("");
  fflush(stdout);
  return 0;
}
