#include <bits/stdc++.h>
using namespace std;

#define int long long																																																							
#define FOR(a, b, c) for (int (a) = (b) ; (a) <= (c) ; (a) ++)
#define pii pair<int, int>
#define tiii tuple<int, int, int>
#define c(a) cout << (a) << " ";
#define ct(a) cout << (a) << '\n'
#define test(a, b) cout << (a) << " " << (b) << '\n'

const int N = 2e5 + 100;
const int inf = 0x3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;

int ksm(int a, int b) {int res = 1;while(b){if (b % 2) res = res * a % mod;b /= 2;a = a * a % mod;} return res;}
int head[N], idx = 0;
struct Edge{int to, w, next;} edges[N << 1];
void add(int u, int v, int w) {edges[++ idx] = {v, w, head[u]}, head[u] = idx;}
// struct Edge{int to, next;} edges[N << 1];
// void add(int u, int v) {edges[++ idx] = {v, head[u]}, head[u] = idx;} 

int n, k;
int a[N], sum1[N], sum2[N];

void Jun() 
{		
    cin >> n >> k;
    FOR (i, 1, n) cin >> a[i];
    sort(a + 1, a + 1 + n);

    FOR (i, 1, n) 
    {
        sum1[i] = (sum1[i - 1] + a[i]) % mod;
        sum2[i] = ((1 + a[i]) * a[i] / 2 + sum2[i - 1]) % mod;
    }

    for (int x, i = 1 ; i <= k ; i ++)
    {
        cin >> x;
        int l = 0, r = n;

        while (l < r)
        {
            int mid = l + r + 1 >> 1;
            if (a[mid] <= x) l = mid;
            else r = mid - 1;
        }

        int ans1 = sum2[l];
        int ans2 = ((sum1[n] - sum1[l] + mod) % mod) * x; ans2 %= mod;
        int reduce = ((n-l)*(x-1)*x/2)%mod;

        cout << ((ans1 + ans2) % mod - reduce + mod) % mod << '\n';
    }
}

signed main()
{
	ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(0);
	int T = 1;
	// cin >> T;
	while(T --) Jun();
	return 0;
}

为什么就对75%我天塌了。