#include<cstdio>
#define md 10007
int color[100010][2][4] = { 0 };
int sbsr[100010];
int main() {
int n, m;
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++) {
scanf("%d", sbsr + i);
sbsr[i] %= md;
}
int cl1;
for (int i = 0; i < n; i++) {
scanf("%d", &cl1);
color[cl1][i & 1][0] += (i+1)%md;
color[cl1][i & 1][0] %=md;
color[cl1][i & 1][1] += sbsr[i] % md;
color[cl1][i & 1][1] %=md;
color[cl1][i & 1][2] += (((i+1)%md)*(sbsr[i]%md))%md;
color[cl1][i & 1][2] %=md;
color[cl1][i & 1][3] ++;
}
int ans = 0;
for (int i = 1; i <= m; i++) {
for (int j = 0; j < 2; j++) {
switch (color[i][j][3])
{
case 0:
break;
case 1:
break;
case 2:
ans += (color[i][j][0] * color[i][j][1]) % md;
ans %= md;
default:
ans += (color[i][j][0] * color[i][j][1]) % md;
ans %= md;
ans += (((color[i][j][3]-2)%md) * (color[i][j][2] % md))%md;
ans %= md;
break;
}
}
}
printf("%d", ans%md);
}