#include <bits/stdc++.h>
using namespace std;
#define int long long
#define INF 1e18
int query(int l, int r) {
cout << "? " << l << " " << r << endl;
int ans; cin >> ans;
return ans;
}
int odd(int n) {
auto check = [&](int x) {
for (int i = 1; i <= n; i++) {
int l = i - x;
int r = i + x;
if (l < 1 || r > n) continue;
if (query(l, r)) return true;
}
return false;
};
int l = 0, r = n / 2, ans = 0;
while (l <= r) {
int m = (l + r) / 2;
if (check(m)) {
ans = m;
l = m + 1;
} else {
r = m - 1;
}
}
return ans * 2 + 1;
}
int even(int n) {
auto check = [&](int x) {
for (int i = 1; i <= n; i++) {
int l = i - x + 1;
int r = i + x;
if (l < 1 || r > n) continue;
if (query(l, r)) return true;
}
return false;
};
int l = 0, r = n / 2, ans = 0;
while (l <= r) {
int m = (l + r) / 2;
if (check(m)) {
ans = m;
l = m + 1;
} else {
r = m - 1;
}
}
return ans * 2;
}
void solve() {
int n;
cin >> n;
// binary search the radius
int o = odd(n);
int e = even(n);
cout << e << " " << o << "\n";
cout << "! " << max(o, e) << endl;
}
int32_t main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}