#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
int n,x,q;
cin>>n>>q;
int a[1000001],b[1000001],mod=7630367;
//initialize array a,b with 0
for(int i=0;i<1000001;i++) a[i]=b[i]=0;
for(int i=0;i<n;i++){
cin>>x;
//mark the position x+1
//so as to increase the distance of the point
//while moving to the right
// similarly for x-1 for other direction
a[x+1]++;
b[x-1]++;
}
//during update we remember the previous update
//and update the distance of current position with both the updates
ll upd=0;
for(int i=1;i<1000001;i++){
//upd changed
upd=(a[i]+upd)%mod;
a[i]=(a[i-1]+upd)%mod;
}
upd=0;
for(int i=1000001-2;i>=0;i--){
upd=(b[i]+upd)%mod;
b[i]=(b[i+1]+upd)%mod;
}
while(q--){
cin>>x;
cout<<(a[x]+b[x])%mod<<endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYWluKCl7CiAgICBpbnQgbix4LHE7CiAgICBjaW4+Pm4+PnE7CiAgICBpbnQgYVsxMDAwMDAxXSxiWzEwMDAwMDFdLG1vZD03NjMwMzY3OwogICAgLy9pbml0aWFsaXplIGFycmF5IGEsYiB3aXRoIDAKICAgIGZvcihpbnQgaT0wO2k8MTAwMDAwMTtpKyspIGFbaV09YltpXT0wOwogICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgY2luPj54OwogICAgICAgIC8vbWFyayB0aGUgcG9zaXRpb24geCsxIAogICAgICAgIC8vc28gYXMgdG8gaW5jcmVhc2UgdGhlIGRpc3RhbmNlIG9mIHRoZSBwb2ludAogICAgICAgIC8vd2hpbGUgbW92aW5nIHRvIHRoZSByaWdodCAKICAgICAgICAvLyBzaW1pbGFybHkgZm9yIHgtMSBmb3Igb3RoZXIgZGlyZWN0aW9uCiAgICAgICAgYVt4KzFdKys7CiAgICAgICAgYlt4LTFdKys7CiAgICB9CiAgICAvL2R1cmluZyB1cGRhdGUgd2UgcmVtZW1iZXIgdGhlIHByZXZpb3VzIHVwZGF0ZSAKICAgIC8vYW5kIHVwZGF0ZSB0aGUgZGlzdGFuY2Ugb2YgY3VycmVudCBwb3NpdGlvbiB3aXRoIGJvdGggdGhlIHVwZGF0ZXMKICAgIGxsIHVwZD0wOwogICAgZm9yKGludCBpPTE7aTwxMDAwMDAxO2krKyl7CiAgICAgICAgLy91cGQgY2hhbmdlZAogICAgICAgIHVwZD0oYVtpXSt1cGQpJW1vZDsKICAgICAgICBhW2ldPShhW2ktMV0rdXBkKSVtb2Q7CiAgICB9CiAgICB1cGQ9MDsKICAgIGZvcihpbnQgaT0xMDAwMDAxLTI7aT49MDtpLS0pewogICAgICAgIHVwZD0oYltpXSt1cGQpJW1vZDsKICAgICAgICBiW2ldPShiW2krMV0rdXBkKSVtb2Q7CiAgICB9CiAgICB3aGlsZShxLS0pewogICAgICAgIGNpbj4+eDsKICAgICAgICBjb3V0PDwoYVt4XStiW3hdKSVtb2Q8PGVuZGw7CiAgICB9Cn0K