#include <iostream>
#include <string>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <queue>
#include <sstream>
#include <stack>
#include <set>
#include <bitset>
#include <deque>
#include <vector>
using namespace std;
int n, t;
long long k;
long long s[100010], q[100010];

int main() {
	scanf("%d %d", &n, &t);
	k = 0;
	for (int i = 0; i < n; i++) {
		scanf("%lld", &s[i]);
		q[i] = s[i] - k;
		k++;
	}

	while (t--) {
		scanf("%lld", &k);
		long long j = upper_bound(q, q + n, k) - q;

		if (j == 0)
			printf("%lld\n", k);
		else
			printf("%lld\n", k - q[j - 1] + s[j - 1] + 1);
	}

	return 0;
}

#include <algorithm>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;
using ll = long long;
using namespace std;
using ll = long long;
using P = pair<int, int>;
#define rep(i, n) for (int i = 0; i < (n); ++i)
const int INF = 2e9;
int main() {

    int n;
    cin >> n;
    set<string> s;
    rep(i, n) {
        string t;
        cin >> t;
        s.insert(t);
    }
    string ans = "!";
    for (auto t : s) {
        if (t[0] == '!') {
            if (s.count(t.substr(1)) > 0)
                ans = t.substr(1);

        } else if (s.count('!' + t) > 0)
            ans = t;
    }
    cout << (ans != "!" ? ans : "satisfiable") << endl;
    return 0;
}