#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> cards;
const int MAX=300000;
int maxim[MAX+1];
int search(int number){
	int maxer=0,v=MAX;
	while(v>0 && maxer!=number-1){
		maxer=max(maxer,maxim[v]%number);
		v=maxim[v]-maxim[v]%number-1;
	}
	return maxer;
}
int main() {
	// your code goes here
	int n,q,query;
	cin >> n >> q;
		for(int i=0;i<n;i++){
			cin >> query;
			maxim[query]=query;
		}
	for(int i=1;i<=300000;i++)
		maxim[i]=max(maxim[i],maxim[i-1]);
	for(int j=0;j<q;j++){
			cin >> query;
			cout << search(query) << endl;
	}
	return 0;
}