#include <bits/stdc++.h>
#define ls idx << 1
#define rs idx << 1 | 1
using namespace std;
const int maxn = 2e5 + 5;
int sum[maxn << 2], tag[maxn << 2];

int query(int k, int idx, int l, int r)
{
    if (l == r)
    {
        sum[idx] = 0;
        return l;
    }
    int mid = l + r >> 1;
    if (tag[idx])
    {
        cout << "? " << l << ' ' << mid << endl;
        int x;
        cin >> x;
        sum[ls] = mid - l + 1 - x;
        sum[rs] = sum[idx] - sum[ls];
        tag[ls] = tag[rs] = tag[idx];
        tag[idx] = 0;
    }
    int ans = 0;
    if (k <= sum[ls])
        ans = query(k, ls, l, mid);
    else
        ans = query(k - sum[ls], rs, mid + 1, r);
    sum[idx] = sum[ls] + sum[rs];
    return ans;
}
int main()
{
    int n, t;
    cin >> n >> t;
    bool ok = 1;
    while (t--)
    {

        int k;
        cin >> k;
        if (ok)
        {
            int x;
            cout << "? " << 1 << ' ' << n << endl;
            cin >> x;
            sum[1] = tag[1] = n - x;
            ok = 0;
        }
        if (k == -1)
        {
            cout.flush();
            exit(0);
        }
        int ans = query(k, 1, 1, n);
        cout << "! " << ans << endl;
    }

    return 0;
}