// problem: CF1470C
#include <bits/stdc++.h>
using namespace std;
#define mk make_pair
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
typedef unsigned int uint;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
template<typename T> inline void ckmax(T& x, T y) { x = (y > x ? y : x); }
template<typename T> inline void ckmin(T& x, T y) { x = (y < x ? y : x); }
const int MAXN = 1e5;
int n, K;
int ask(int i) {
if (i > n) {
i -= n;
}
cout << "? " << i << endl;
int x;
cin >> x;
return x;
}
void report(int i) {
if (i > n) {
i -= n;
}
cout << "! " << i << endl;
}
int main() {
cin >> n >> K;
int len = ((n <= 900) ? 1 : 400);
for (int i = 1; i <= len; ++i) {
ask(1);
}
int l = 0, r = 0;
for (int i = 1; i <= n; i += len) {
int x = ask(i);
if (x > K) {
r = i;
}
if (x < K) {
l = i;
}
}
assert(l != 0);
assert(r != 0);
if (r < l) {
r += n;
}
assert(l + 1 < r);
++l;
--r;
while (l < r) {
int mid = (l + r) >> 1;
int x = ask(mid);
if (x == K) {
report(mid);
return 0;
} else if (x > K) {
r = mid - 1;
} else {
l = mid + 1;
}
}
report(l);
return 0;
}