#include <cstdio>
#include <algorithm>
typedef long long ll;
using namespace std;
const int MAXN = 1e5 + 10;
const int MOD = 1e9 + 7;
int N, D;
int A, B;
ll m[MAXN];
ll ans;
int main() {
freopen("Milk.in", "r", stdin);
freopen("Milk.out", "w", stdout);
scanf("%d %d", &N, &D);
scanf("%d %d", &A, &B);
for (int i = 1; i <= N; ++i) {
scanf("%lld", &m[i]);
}
while (D--) {
partial_sort(m + 1, m + A + 1, m + N + 1, [](int x, int y){return x > y;});
for (int i = B + 1; i <= A; ++i) {
m[i] += 1;
}
}
for (int i = 1; i <= N; ++i) {
(ans += m[i] % MOD * m[i] % MOD) %= MOD;
}
printf("%lld", ans);
return 0;
}