#include<bits/stdc++.h>
using namespace std;
struct Node{
int i,w;
};
const int md=10007;
Node a[200001][100001];
int nw[200001],x[100001][3],qzh[200001][3];
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&x[i][1]);
}
for(int i=1;i<=n;i++){
scanf("%d",&x[i][2]);
a[x[i][2]*2-x[i][1]%2][++nw[i]]={i,x[i][1]};
}
int ans=0;
for(int i=1;i<=m*2;i++){
int js1=0,js2=0,js3=0;
for(int j=1;j<=nw[i];j++){
js1+=a[i][j].i;
js2+=a[i][j].w;
js3+=a[i][j].i*a[i][j].w;
js1%=md;
js2%=md;
js3%=md;
}
ans+=js1*js2+js3*(nw[i]-2);
ans%=md;
}
printf("%d",ans);
return 0;
}