using namespace std;
#include<stdio.h>
#include<algorithm>
FILE *f=fopen("caramizi.in","r"),
*g=fopen("caramizi.out","w");
#define N_MAX 200009
long long min(long long a,long long b,long long c)
{ if(a<b&&a<c) return a;
if(b<a&&b<c) return b;
return c;
}
long long min(long long a,long long b)
{ if(a>b) return b;
return a;
}
long long max(long long a,long long b)
{ if(a>b) return a;
return b;
}
long long sums[N_MAX],a[N_MAX],things[N_MAX],i,j,n,m,k,v,x;
int bs(int val)
{
int i, step;
for (step = 1; step < n; step <<= 1);
for (i = 0; step; step >>= 1)
if (i + step <=n && things[i + step] >= val)
i += step;
return i;
}
char sir[10005];
int p=0,nr;
void cit(long long &y)
{ y=0;
while(sir[p]>='0'&&sir[p]<='9') { y=(y<<3)+(y<<1)+sir[p]-'0';++p;
if(p==10001) fread(sir,1,10000,f);
}
while(sir[p]<'0'||sir[p]>'9') { ++p;
if(p==10000) fread(sir,1,10000,f);
}
}
int main()
{ fread(sir,1,10000,f);
while(sir[p]<'0'||sir[p]>'9') { ++p;
if(p==10000) fread(sir,1,10000,f);
}
cit(n);
cit(m);
for(i=1;i<=n;++i) cit(a[i]);
sort(a+1,a+n+1);
for(i=1;i<=n;++i) sums[i]=sums[i-1]+a[i];
things[n]=a[1];
things[n-1]=min(a[1]+a[2],a[3],sums[n]/(n-1));
for(i=n-2;i>=1;--i) { things[i]=min(sums[n-i+1],sums[2*(n-i)+1]-sums[n-i+1],sums[n]/i);
if(things[i]<things[i+1]) things[i]=2000000007;
}
for(i=1;i<=m;++i) { cit(x);
k=bs(x);
if(k==n) fprintf(g,"%lld\n",x*n);
else fprintf(g,"%lld\n",min(sums[n],max(things[k+1]*(k+1),x*k)));
}
fclose(f);
fclose(g);
return 0;
}