#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline bool chkmax(T &a, T b) {
  return a < b ? a = b, 1 : 0;
}
template <typename T>
inline bool chkmin(T &a, T b) {
  return b < a ? a = b, 1 : 0;
}
const int MAXN = 1005;
int n, a[MAXN], Ans[2];
void func(int l, int r, int st, int a1) {
  if (l > r) return;
  if (Ans[0] && Ans[1]) return;
  int mid = (l + r) >> 1;
  for (register int i = (l), i_end_ = (mid); i <= i_end_; ++i) a[i] ^= 1;
  printf("? ");
  for (register int i = (1), i_end_ = (n); i <= i_end_; ++i) printf("%d", a[i]);
  putchar('\n');
  fflush(stdout);
  int a2;
  scanf("%d", &a2);
  int c[2];
  c[st] = (a2 + (mid - l + 1) - a1) / 2;
  c[st ^ 1] = (mid - l + 1) - c[st];
  if (c[0] == 0)
    Ans[1] = l, func(mid + 1, r, st, a2);
  else if (c[1] == 0)
    Ans[0] = l, func(mid + 1, r, st, a2);
  else
    func(l, mid, st ^ 1, a2);
}
int main() {
  scanf("%d", &n);
  printf("? ");
  for (register int i = (1), i_end_ = (n); i <= i_end_; ++i) putchar('0');
  putchar('\n');
  fflush(stdout);
  int ans;
  scanf("%d", &ans);
  func(1, n, 0, ans);
  printf("! %d %d\n", Ans[0], Ans[1]);
  return 0;
}
