#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
	int n,m;
	cin >> n >> m;
	vector<int> w(m+1);
	for(int i=0; i<m; i++){
		cin >> w[i];
	}
	w[m] = n+1;
	int q;
	cin >> q;
	vector<int> query(q);
	for(int i=0; i<q; i++){
		cin >> query[i];
	}

	vector<int> loss(n+2,0),num(n+2,0);
	loss[0] += w[0]-1;
	num[0] += m;
	for(int i=0; i<m; i++){
		int len = w[i+1] -w[i];
		loss[0] += len;
		loss[len+1] -= len;
		num[len+1] -= 1;
	}
	for(int i=0; i<n+2; i++){
		loss[i+1] += loss[i];
		num[i+1] += num[i];
	}
	for(int i=0; i<n+2; i++){
		loss[i] -= num[i]*i;
		loss[i] = -loss[i];
	}

	for(int i=0; i<q; i++){
		if(-loss[n+1] > query[i]){
			cout << -1 << endl;
		}else{
			auto itr = lower_bound(loss.begin(), loss.end(), -query[i]);
			int ans = itr -loss.begin();
			cout << max(1, ans) << endl;
		}
	}
	return 0;
}
