#include <bits/stdc++.h>
using namespace std;
const int len = 305;
int st[len], out[len];
void flip(int l, int r) {
  for (int i = l; i <= r; i++) st[i] ^= 1, out[i] ^= 1;
}
int ask(int l, int r) {
  printf("? %d %d\n", l, r);
  fflush(stdout);
  int ans;
  scanf("%d", &ans);
  return ans;
}
int main() {
  int n, x, y, z;
  scanf("%d %d", &n, &x);
  if (n == 1) {
    if (x == 1) out[1] = 1;
  } else if (n % 2 == 0) {
    for (int i = 1; i <= n; i++) {
      while (true) {
        y = ask(i, i), z = 0;
        for (int j = 1; j < i; j++) z += out[j];
        if ((i % 2 == 0 && y % 2 != x % 2) || (i % 2 == 1 && y % 2 == x % 2)) {
          flip(i, n);
          x = y;
        } else {
          if (y == x + i - 2 * z)
            out[i] = 0;
          else
            out[i] = 1;
          flip(1, i);
          x = y;
          break;
        }
      }
    }
  } else {
    while (true) {
      y = ask(2, n);
      if (y == n - x) {
        flip(1, n);
        x = y;
      } else {
        if (y == n - x - 1)
          out[1] = 0;
        else
          out[1] = 1;
        flip(2, n);
        x = y;
        break;
      }
    }
    for (int i = 2; i <= n; i++) {
      while (true) {
        y = ask(i - 1, i), z = 0;
        for (int j = 1; j < i; j++) z += out[j];
        if ((i % 2 == 0 && y % 2 != x % 2) || (i % 2 == 1 && y % 2 == x % 2)) {
          flip(i - 1, n);
          x = y;
        } else {
          if (y == x + i - 2 * z)
            out[i] = 0;
          else
            out[i] = 1;
          flip(1, i);
          x = y;
          break;
        }
      }
    }
  }
  printf("! ");
  for (int i = 1; i <= n; i++) printf("%d", out[i] ^ st[i]);
  printf("\n");
  fflush(stdout);
  return 0;
}
