#include<bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define x asdasd
#define y asdaf
#define pb push_back
#define pf push_front
using namespace std;
ll n, m, d, t, kk, s, mn, w, h, a[2001][2001], kol, q, mod = 1e9 + 7, mn1, mn2, mx2, dp[1003001], si, sj, fi, fj, p = 1, mx1, y, k, x, ans1, ans2, ans, powp[311001], suf[310001], pref[310001], mx, b[310001];
map< ll, ll> us, us1;
vector< ll> v, v2, v1;
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    ll t24 = 1;
//    cin >> t24;
    for(ll qwe = 1; qwe <= t24; qwe++)
    {
        ll sum = 0, sum1 = 0, f1 = 0, f = -1, q1 = -1, r = 1e9, l = 0, kol = 1, kol1 = 0;
        mx = -1e18, mx2 = -1e18, mn1 = 1e18, mn = 1e18, mx1 = -1e18, mn2 = 1e18, ans = 0;
        ll t;
        cin >> n >> t;
        ll L[n + 10], R[n + 10], c[n + 10];
        for(int i = 1; i <= t; i++)
        {
            cin >> k;
            if(i == 1)
                for(int i = 1,j = 1; i <= n; i += 21,j++)
                {
                    L[j] = i;
                    R[j] = min(n, i + 20ll);
                    cout << "? 1 " << min(i + 20ll, n) << endl;
                    cin >> f;
                    c[j] = R[j] - f;
                }
            for(int i = 1; i <= n; i++)
            {
                if(c[i] >= k)
                {
                    int l = L[i], r = R[i];
                    while(l < r)
                    {
                        int mid = (l + r) / 2;
                        cout << "? 1 " << mid << endl;
                        cin >> f;
                        if(f > mid - k)
                            l = mid + 1;
                        else r = mid;
                    }
                    cout << "! " << l << endl;
                    for(int j = i; j <= n; j++)
                    {
                        if(L[j] == 0)break;
                        c[j]--;
                    }
                    break;
                }
            }
        }
    }
}
/**
**/
