#include<bits/stdc++.h>
//#define endl "\n"
#define pb push_back
#define ll long long int
#define f first
#define s second
using namespace  std;
ll mod=1e9;
mt19937 mt(time(0));
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n,t,x;
    cin>>n>>t;
    vector<int>v;
    int ar[200],fl=0;
    int buc=10;
    while(t--)
    {
        int k;
        cin>>k;
        if(fl==0)
        {
            for(int i=1;i<=n;i+=buc)
            {
                cout<<"? "<<i<<" "<<min(n,i+buc-1)<<endl;
                cin>>x;
                v.pb(min(n,i+buc-1)-i+1-x);
            }
            fl=1;
        }
        int block=1;
        for(int i=0;i<(int)v.size();i++)
        {
            if(v[i]<=k)k-=v[i],block=i+1;
            else {k-=v[i];block=i+1;break;}
            if(k<=0)break;
        }
        int l=buc*(block-1)+1,r=min(n,l+buc-1),ans=l;
        k+=v[block-1];
        while(l<=r&&k>0)
        {
            int mid=(l+r)/2,a,b;
            cout<<"? "<<l<<" "<<mid<<endl;
            cin>>a;
            if(a<=mid-l+1-k)r=mid-1,ans=mid;
            else k-=(mid-l+1-a),l=mid+1;
        }
        cout<<"! "<<ans<<endl;
        v[block-1]-=1;
    }
    return 0;
    }
