#include <bits/stdc++.h>
using namespace std;
int n, Old, cur;
int pos0, pos1;
string s;
inline int Query(string x) {
  cout << "? " << x << endl;
  fflush(stdout);
  int val;
  cin >> val;
  return val;
}
inline void Ans(int x, int y) {
  cout << "! " << x << ' ' << y << endl;
  fflush(stdout);
  exit(0);
}
void attempt0(int l, int r) {
  if (l == r) {
    pos0 = l;
    return;
  }
  for (int i = 0; i < n; i++) s[i] = '0';
  int mid = (l + r) >> 1;
  for (int i = l; i <= mid; i++) s[i] = '1';
  int cur = Query(s);
  int change = cur - Old;
  if (change != -(mid - l + 1))
    attempt0(l, mid);
  else
    attempt0(mid + 1, r);
}
void attempt1(int l, int r) {
  if (l == r) {
    pos1 = l;
    return;
  }
  for (int i = 0; i < n; i++) s[i] = '1';
  int mid = (l + r) >> 1;
  for (int i = l; i <= mid; i++) s[i] = '0';
  int cur = Query(s);
  int change = cur - Old;
  if (change != -(mid - l + 1))
    attempt1(l, mid);
  else
    attempt1(mid + 1, r);
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) s += '0';
  Old = Query(s);
  s[n - 1] = '1';
  cur = Old - Query(s);
  if (cur == 1) {
    pos1 = n - 1;
    attempt0(0, n - 1);
  } else {
    s = "";
    for (int i = 1; i <= n; i++) s += '1';
    Old = Query(s);
    pos0 = n - 1;
    attempt1(0, n - 1);
  }
  Ans(pos0 + 1, pos1 + 1);
}
