#include <bits/stdc++.h>
using namespace std;
void flip(string &s, int start, int count) {
  for (int i = start; i < start + count; i++) {
    s[i] = (s[i] == '0') ? '1' : '0';
  }
}
int askDistance(const string &s) {
  cout << "? " << s << endl;
  cout.flush();
  int r;
  cin >> r;
  return r;
}
int binarySearchString(char target, int size) {
  char notTarget = (target == '0') ? '1' : '0';
  int start = 1, count = size - start;
  string base_s;
  base_s.append(size, notTarget);
  int baseline = askDistance(base_s);
  while (count > 1) {
    int changeCount = count / 2;
    string s = base_s;
    flip(s, start, changeCount);
    int distance = askDistance(s);
    if (changeCount == 1) {
      if (distance < baseline)
        count = 1;
      else {
        count = count - changeCount;
        start = start + changeCount;
      }
    } else if (distance < baseline)
      count = changeCount;
    else if (abs(baseline - distance) < changeCount)
      count = changeCount;
    else {
      count = count - changeCount;
      start = start + changeCount;
    }
  }
  return start;
}
int main() {
  int n;
  cin >> n;
  string answer;
  answer.append(n, '0');
  int baseline = askDistance(answer);
  answer[0] = '1';
  int pos1Distance = askDistance(answer);
  bool firstPosIsZero = (pos1Distance > baseline);
  char target = (firstPosIsZero) ? '1' : '0';
  int pos = binarySearchString(target, n);
  if (firstPosIsZero)
    cout << "! 1 " << (pos + 1) << endl;
  else
    cout << "! " << (pos + 1) << " 1" << endl;
  cout.flush();
}
