#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
struct jgt {
long long a, b, q;
}c[100005];
bool cmp(jgt x, jgt y) {
return x.a < y.a;
}
int n, t;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> t;
for (int i = 1; i <= n; i ++) {
cin >> c[i].a;
}
for (int i = 1; i <= n; i ++) {
cin >> c[i].b;
if (c[i].b == 0) {
c[i].a -= t;
} else {
c[i].a += t;
}
c[i].q = c[i - 1].q + c[i].a;
}
sort(c + 1, c + n + 1, cmp);
for (int i = 1; i <= n; i ++) {
c[i].q = c[i - 1].q + c[i].a;
}
unsigned long long ans = 0;
for (int i = n; i > 1; i --) {
ans += ((c[i].a * (i - 1)) - MOD - (c[i - 1].q - MOD));
ans = ans % MOD;
}
cout << ans;
return 0;
}