
#include <bits/stdc++.h>
#define forr(i,a,b) for(int i=(a);i<(b);i++)
#define forn(i,n) forr(i,0,n)
#define dforn(i,n) for(int i=n-1;i>=0;i--)
#define forall(it,v) for(auto it=v.begin();it!=v.end();it++)
#define sz(c) ((int)c.size())
#define rsz resize
#define pb push_back
#define mp make_pair
#define lb lower_bound
#define ub upper_bound
#define fst first
#define snd second

#ifdef ANARAP
//prueba
#else
//real
#endif

using namespace std;

typedef long long ll;
typedef pair<int,int> ii;

int main()
{
	#ifdef ANARAP
		freopen("input.in", "r", stdin);
		//freopen("output.out", "w", stdout);
		unsigned t0, t1; t0=clock();
	#endif
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int n; ll k;
	cin >> n >> k;
	int paso = max(1,n/450);
	int cont = 1;
	ll rta;
	int st=1;
	cout << "? " << st << endl;
	cin >> rta;
	while(rta >= k){
		st+=paso;
		if(st>n) st=(st%n);
		cout << "? " << st << endl;
		cin >> rta;
		cont++;
	}
	//~ int nada;
	//~ while(cont<950){
		//~ cout << "? " << 1 << endl;
		//~ cin >> nada;
		//~ cont++;
	//~ }
	//~ cout << "XD " << endl;
	int L=st, R=st+n/2+1, M, aux;
	while(L<R){
		 M = (L+R+1)/2;
		 int MM = M;
		if(M>n) M=(M%n);
		cout << "? " << M << endl;
		cin >> aux;
		if(aux <= rta){
			L=MM;
			rta=aux;
		}
		else R=MM-1;
	}
	L++; 
	if(L>n) L=L%n;
	cout << "! " << L << endl; 
	
	#ifdef ANARAP
	t1 = clock();double time = (double(t1-t0)/CLOCKS_PER_SEC); cout << "Execution Time: " << time << endl;
	#endif
	return 0;
}

