#include <bits/stdc++.h>
using namespace std;
int n;
namespace solver1 {
char cur[1001];
void main() {
  int l = 1, r = n;
  int tot_cnt0, tot_cnt1, l_cnt0, r_cnt0, l_cnt1, r_cnt1, pre_cnt1 = 0,
                                                          ans0 = 0, ans1 = 0;
  for (int i = 1; i <= n; i++) {
    cur[i] = '0';
  }
  cur[n + 1] = '\0';
  printf("? %s\n", cur + 1);
  fflush(stdout);
  scanf("%d", &tot_cnt1);
  tot_cnt0 = n - tot_cnt1;
  while (1) {
    for (int i = 1; i <= n; i++) cur[i] = '0';
    int mid = (l + r) >> 1;
    for (int i = l; i <= mid; i++) {
      cur[i] = '1';
    }
    printf("? %s\n", cur + 1);
    fflush(stdout);
    int t;
    scanf("%d", &t);
    t -= pre_cnt1;
    l_cnt0 = (t - tot_cnt1 + mid - l + 1) / 2;
    l_cnt1 = mid - l + 1 - l_cnt0;
    r_cnt1 = tot_cnt1 - l_cnt1;
    r_cnt0 = tot_cnt0 - l_cnt0;
    if (!l_cnt1) {
      ans0 = l;
      if (ans0 && ans1) break;
    }
    if (!r_cnt1) {
      ans0 = r;
      if (ans0 && ans1) break;
    }
    if (!l_cnt0) {
      ans1 = l;
      if (ans0 && ans1) break;
    }
    if (!r_cnt0) {
      ans1 = r;
      if (ans0 && ans1) break;
    }
    if (!l_cnt0 || !l_cnt1) {
      l = mid + 1;
      tot_cnt1 = r_cnt1;
      tot_cnt0 = r_cnt0;
      pre_cnt1 += l_cnt1;
    } else {
      r = mid;
      tot_cnt1 = l_cnt1;
      tot_cnt0 = l_cnt0;
      pre_cnt1 += r_cnt1;
    }
  }
  printf("! %d %d\n", ans0, ans1);
}
}  // namespace solver1
int main() {
  scanf("%d", &n);
  solver1::main();
  return 0;
}
