#include <bits/stdc++.h>
using namespace std;
struct P {
  int x, y;
  bool operator<(const P &a) const {
    if (x != a.x) return x > a.x;
    return y > a.y;
  }
};
vector<int> v;
int i, n, d, m, k, a, b, c, h;
int o[311];
int l[311];
int j[331];
int e;
int dx[10] = {0, 1, 0, -1, 1, 1, -1, -1}, dy[10] = {1, 0, -1, 0, 1, -1, 1, -1},
    dz[10] = {0, 0, 0, 0, 1, -1};
long long mod = 998244353, mod2 = 1000000009, mod3 = 2017;
long long x, z, y;
double pi = 3.14159265;
P u[3];
stack<int> s;
queue<int> q;
string r;
bool as(P a, P b) {
  if (a.x != b.x) return a.x < b.x;
  return a.y < b.y;
}
int f(int n, int m, int u) {
  printf("? %d %d\n", n, m);
  fflush(stdout);
  int p;
  scanf("%d", &p);
  return p;
}
void g1() {
  n = b;
  for (int t = 1; t <= a; t++) {
    for (; (c = f(t, t, 0)) && (((n - c) % 2 + 2) % 2 != t % 2);) {
      for (int w = t; w <= a; l[w]++, w++)
        ;
      n = c;
    }
    int x = n, y = c;
    for (int w = 1; w < t; w++)
      if ((l[w] + o[w]) % 2)
        x--;
      else
        y--;
    if ((x > y && l[t] % 2 == 0) || (x < y && l[t] % 2)) o[t] = 1;
    for (int w = 1; w <= t; w++) l[w]++;
    n = c;
  }
}
void g2() {
  if (a == 1) {
    if (b) o[1] = 1;
    return;
  }
  n = b;
  for (; (c = f(2, a, 0)) && ((n - c) % 2 + 2) % 2;) {
    for (int t = 1; t <= a; t++) l[t]++;
    n = c;
  }
  if ((n > (a - c) && l[1] % 2 == 0) || (n < (a - c) && l[1] % 2)) o[1] = 1;
  for (int t = 2; t <= a; t++) l[t]++;
  n = c;
  for (int t = 2; t < a; t++) {
    for (; (c = f(t - 1, t, 0)) && (((n - c) % 2 + 2) % 2 != t % 2);) {
      for (int w = t - 1; w <= a; l[w]++, w++)
        ;
      n = c;
    }
    int x = n, y = c;
    for (int w = 1; w < t; w++)
      if ((l[w] + o[w]) % 2)
        x--;
      else
        y--;
    if ((x > y && l[t] % 2 == 0) || (x < y && l[t] % 2 == 1)) o[t] = 1;
    for (int w = 1; w <= t; w++) l[w]++;
    n = c;
  }
  int x = 0;
  for (int t = 1; t < a; x += o[t], t++)
    ;
  if (x < b) o[a] = 1;
}
int main() {
  scanf("%d %d", &a, &b);
  if (a == b) {
    for (int t = 1; t <= a; o[t] = 1, t++)
      ;
  } else if (b == 0) {
    ;
  } else if (a % 2)
    g2();
  else
    g1();
  printf("! ");
  for (int t = 1; t <= a; t++) printf("%d", o[t]);
  puts("");
  fflush(stdout);
}
