#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0;
  char ch = getchar();
  bool f = 0;
  for (; ch < '0' || ch > '9'; ch = getchar())
    if (ch == '-') f = 1;
  for (; ch >= '0' && ch <= '9'; ch = getchar())
    x = (x << 3) + (x << 1) + (ch ^ 48);
  return f ? -x : x;
}
int now, n, st[10001], top;
inline int flip(int x, int y) {
  printf("? %d %d\n", x, y);
  fflush(stdout);
  ++top;
  scanf("%d", &st[top]);
  return (st[top] - st[top - 1]) & 1;
}
inline int ask(int y, int x, bool z) {
  int len = n - x + 1, s[2];
  s[0] = s[1] = 0;
  if (len == 1)
    len++;
  else
    len--;
  for (; !(s[0] == 1 && s[1] == 0);) s[flip(y, x) ^ z] ^= 1;
  return now = st[top];
}
int su[305];
int main() {
  scanf("%d%d", &n, &now);
  su[n] = st[0] = now;
  int pre, tmp, j, k, w;
  for (int i = (1), end_i = (n); i < end_i; i++) {
    if (i == 1 && (n & 1))
      j = 2, k = n, w = 0;
    else
      j = i - (n & 1), k = i, w = (i & 1);
    pre = now;
    tmp = ask(j, k, w);
    if (i == 1 && (n & 1))
      su[1] = (n - 1 - tmp + pre) / 2, su[1] = pre - su[1];
    else
      su[i] = (i - tmp + pre) / 2;
    ask(j, k, w);
  }
  printf("! ");
  for (int i = (1), end_i = (n); i <= end_i; i++)
    printf("%d", su[i] - su[i - 1]);
  puts("");
  fflush(stdout);
  return 0;
}
