#include<bits/stdc++.h>
#define debug printf("\n I am here\n");
#define fi first
#define se second
#define pii pair<int,int>
typedef long long ll;
const int maxn=2e3+5,inf=0x3f3f3f3f,mod=1e9+7;
const ll INF=0x3f3f3f3f3f3f3f3f;
using namespace std;
int n,t;
int k;
map<pair<int,int>,int> mp;
int cal(int l,int r){
//    printf("%d %d %d\n",l,r,mp[{l,r}]);
    if(mp.count({l,r})) return mp[{l,r}];
    printf("? %d %d\n",l,r);
    fflush(stdout);
    int re;
    scanf("%d",&re);
    mp[{l,r}]=r-l+1-re;

    return mp[{l,r}];
}
void query(int l,int r,int k){
    mp[{l,r}]--;
    if(l==r){
        printf("! %d\n",l);
        fflush(stdout);
        return ;
    }
    int mid=(l+r)/2;
    if(cal(l,mid)>=k) query(l,mid,k);
    else query(mid+1,r,k-cal(l,mid));
//    if(mp[{l,r}]!=0)
//    mp[{l,r}]--;
}
int main(){
    scanf("%d%d",&n,&t);
    while(t--){
        scanf("%d",&k);
        query(1,n,k);
    }
    return 0;
}
