#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct node{
int yuanb;
int v;
int col;
}a[100005];
bool cmp(node x,node y){
if(x.col!=y.col)return x.col<y.col;
return x.v<y.v;
}
int main(){
long long ans=0;
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i].v;
a[i].yuanb=i;
}
for(int i=1;i<=n;i++) cin>>a[i].col;
sort(a+1,a+n+1,cmp);
long long so1=0,so2=0,so3=0,so=0,sj=0,sj1=0,sj2=0,sj3=0;
for(int i=1;i<=n+1;i++){
if(a[i].col!=a[i-1].col){
ans+=so1*so2+so3*(so-2);
ans%=10007;
ans+=sj1*sj2+sj3*(sj-2);
ans%=10007;
so1=0,so2=0,so3=0,so=0,sj=0,sj1=0,sj2=0,sj3=0;
}
if(a[i].yuanb%2==0) {
so1+=a[i].yuanb;
so2+=a[i].v;
so3+=a[i].yuanb*a[i].v;
so++;
so1%=10007,so2%=10007,so3%=10007;
}
if(a[i].yuanb%2==1){
sj1+=a[i].yuanb;
sj2+=a[i].v;
sj3+=a[i].yuanb*a[i].v;
sj++;
sj1%=10007,sj2%=10007,sj3%=10007;
}
}
cout<<ans;
return 0;
}