#include <bits/stdc++.h>
using namespace std;
char x[1002];
char y[1002];
int firstValue = 0;
int l0, r0, l1, r1, l2, r2;
int res0, res1;
int n, temp;
void Change(int l, int r) {
  for (int i = 1; i <= n; ++i) y[i] = x[i];
  for (int i = l; i <= r; ++i) y[i] = '1';
  y[n + 1] = '\0';
}
void biSearch0() {
  printf("? ");
  Change(l0, r0);
  printf("%s\n", y + 1);
  fflush(stdout);
  scanf("%d", &temp);
  if (firstValue - temp == -r0 + l0 - 1) {
    res0 = l0;
    return;
  } else if (firstValue - temp == -l0 + r0 + 1) {
    res1 = l0;
    int mid = (l1 + r1) / 2;
    l0 = l1;
    r0 = mid;
    l1 = min(mid + 1, r1);
  } else {
    int mid = (l0 + r0) / 2;
    r1 = r0;
    r0 = mid;
    l1 = min(mid + 1, r1);
    l2 = l0;
    r2 = r0;
  }
  biSearch0();
}
void biSearch1() {
  printf("? ");
  Change(l1, r1);
  printf("%s\n", y + 1);
  fflush(stdout);
  scanf("%d", &temp);
  if (-temp + firstValue == r1 - l1 + 1) {
    res1 = l1;
    return;
  } else if (-firstValue + temp == r1 - l1 + 1) {
    int mid = (l0 + r0) / 2;
    if (mid + 1 > r0) {
      res1 = r0;
      return;
    }
    l1 = mid + 1;
    r1 = r0;
    r0 = mid;
  } else {
    int mid = (l1 + r1) / 2;
    l0 = l1;
    if (mid + 1 > r1) {
      res1 = r1;
      return;
    }
    l1 = mid + 1;
    r0 = mid;
  }
  biSearch1();
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) x[i] = '0';
  x[n + 1] = '\0';
  printf("? ");
  printf("%s", x + 1);
  printf("\n");
  fflush(stdout);
  scanf("%d", &firstValue);
  l0 = 1, r0 = (n + 1) / 2, l1 = (n + 1) / 2 + 1, r1 = n;
  biSearch0();
  if (res1 == 0) {
    l0 = l2;
    r0 = r2;
    biSearch1();
  }
  printf("! %d %d", res0, res1);
  fflush(stdout);
  return 0;
}
