#include <cstdio>
#include<algorithm>
#define ll long long
#define DIM 8192
using namespace std;
ll s[1000010],v[1000010];
int n, m;
char ax[DIM+16];
int pz;
inline void cit(int &x)
{ x=0;
while(ax[pz]<'0' || ax[pz]>'9')
if(++pz==DIM)fread(ax, 1, DIM, stdin), pz=0;
while(ax[pz]>='0' && ax[pz]<='9')
{ x=x*10+ax[pz]-'0';
if(++pz==DIM)fread(ax,1, DIM, stdin),pz=0;
}
}
int main()
{ freopen ("caramizi.in","r",stdin);
freopen ("caramizi.out","w",stdout);
cit(n); cit(m);
int c,i,maxc=0;
for(i=1;i<=n;i++) {cit(c); maxc=max(maxc,c); v[c]++;}
for(i=1;i<=maxc;i++) s[i]=s[i-1]+v[i-1]*(i-1);
ll sum=s[maxc]+v[maxc]*maxc;
for(i=maxc;i>0;i--) v[i]+=v[i+1];
for(i=1;i<=maxc;i++)
{ s[i]=(s[i]+v[i]*i)/i*i;
s[i]=max(s[i],s[i-1]);
}
n=sum/maxc;
v[n+1]=s[maxc];
for(i=n;i>0;i--)
{ v[i]=sum/i*i;
v[i]=max(v[i],v[i+1]);
}
while(m--)
{ cit(c);
if(c<=maxc) printf("%lld\n",s[c]);
else printf("%lld\n",max(sum/c*c,v[sum/c+1]));
}
return 0;
}
/*
#include <cstdio>
#define DIM 8192
char ax[DIM+16];
int pz;
inline void cit(int &x)
{
x=0;
while(ax[pz]<'0' || ax[pz]>'9')
if(++pz==DIM)fread(ax, 1, DIM, stdin), pz=0;
while(ax[pz]>='0' && ax[pz]<='9')
{
x=x*10+ax[pz]-'0';
if(++pz==DIM)fread(ax,1, DIM, stdin),pz=0;
}
}
******************
#include <algorithm>
#include <cstdio>
#define INF 1000005
#define DIM 200005
#define pr(a,b) ( a-((a/b)*b) )
#define max(a,b) ( (a>b) ? a : b )
#define ll long long
using namespace std;
ll Rez[INF],Size[INF];
ll Sum=-1;
int A[DIM];
int N,M,x;
int main()
{
freopen ("caramizi.in","r",stdin);
freopen ("caramizi.out","w",stdout);
scanf ("%d%d",&N,&M);
for (int i=1; i<=N; ++i)
scanf ("%d",&A[i]);
A[0]=1,A[N+1]=INF;
sort (A,A+N+1);
for (int i=0; i<=N; ++i)
{
Sum+=A[i];
for (ll j= A[i] ; j<A[i+1]; ++j)
Rez[j]=max (Rez[j-1], Sum-Sum%j+(N-i)*j);
}
for (int i=Sum/A[N]; i; --i)
Size[i]=max (Sum-pr(Sum,i),Size[i+1]);
for ( ;M;--M )
{
scanf ("%d",&x);
printf ("%lld\n",(x<INF) ? Rez[x] : Size[Sum/x+1]);
}
}
*/