#include <iostream>

using namespace std;

#define MAXN 200200
#define ll long long

int n, t, k;
ll bit[MAXN];

void upd(ll c, ll v) {
	while (c <= n) {
		bit[c] += v;
		c += (c & (-c));
	}
}

ll query(ll c) {
	ll res = 0;
	while (c > 0) {
		res += bit[c];
		c -= (c & (-c));
	}
	return res;
}

void set(ll c, ll v) {
	ll cv = query(c);
	upd(c, v - cv);
	upd(c + 1, -(v - cv));
}

int main() {

	cin >> n >> t;

	for (int i = 0; i <= n; i++)
		bit[i] = 0;

	for (int i = 1; i <= n; i++)
		set(i, -999999999);
	
	while (t--) {

		cin >> k;

		int lo = 1, hi = n;
		while (lo != hi) {

			int avg = (lo + hi) / 2;

			int res = query(avg);
			if (res < 0) {
				cout << "? " << 1 << " " << avg << endl;
				cout.flush();
				cin >> res;
				set(avg, res);
			}

			int numzero = avg - res;
			if (numzero < k) lo = avg + 1;
			else hi = avg;

		}

		cout << "! " << lo << endl;
		cout.flush();

		upd(lo, 1);

		// for (int i = 1; i <= n; i++)
		// 	cout << query(i) << " ";
		// cout << endl;

	}

}