#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;

//#define __DEBUG
int a[2][100001];
int n, k;
int ask(int x) {
    cout << "? " << x+1 << endl;
    #ifdef __DEBUG
    static int cnt = 0;
    return a[cnt&1][x+1];
    cnt++;
    #else
    cin >> x;
    return x;
    #endif
}
void answer(int x) {
    cout << "! " << x % n +1 << endl;
    exit(0);
}
void calc_a(int i) {
    #ifdef __DEBUG
    for(int j=1;j<=n;j++)
        a[1-(i&1)][j] = 0;
    for(int j=1;j<=n;j++) {
        if(j == 1) a[1-(i&1)][j+1] += a[i&1][j];
        else if(j != n) {
            a[1-(i&1)][j-1] += a[i&1][j]/2;
            a[1-(i&1)][j+1] += (a[i&1][j]+1)/2;
        }
        else {
            a[1-(i&1)][j-1] += a[i&1][j]/2;
            a[1-(i&1)][1] += (a[i&1][j]+1)/2;
        }
    }
    for(int j=1;j<=n;j++)
        cout << a[1-(i&1)][j] << " \n"[j == n];
    #endif
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n >> k;
    for(int i=1;i<=n;i++)
        a[0][i] = k;
    int pos = 1;
    int i = 0;
    while(i < 1000) {
        int x = ask(pos);
        if(x == k) {
            if(n <= 307) {
                pos = (pos+1) % n;
            }
            else pos = (pos + 307) % n;
        }
        else {
            int r = min(i, (n+1)/2-1);
            int lpos = x < k ? pos : (pos - r + n) % n;
            while(r) {
                int m = (lpos + r/2) % n;
                int res = ask(m);
                if(res == k) answer(m);
                else if(res < k) {
                    lpos = (lpos + r/2 + 1) % n;
                    r = r - (r/2+1);
                }
                else {
                    r = r/2;
                }
                calc_a(i);
                i++;
            }
            answer(lpos);
        }
        calc_a(i);
        i++;
    }
}