#include<bits/stdc++.h>
using namespace std;
struct doge{long long n,v,c;}f[1000002];
bool cmp(doge q,doge p){if(q.c==p.c){return q.n%2<(p.n%2);}else return q.c<p.c;}
long long n,m,ans,k[1000002],mm,tot=1;
int main(){
cin>>n>>m;
mm=m;
for(int i=1;i<=n;i++)cin>>f[i].v;
for(int i=1;i<=n;i++){
cin>>f[i].c;
f[i].n=i;
}
sort(f+1,f+1+n,cmp);
for(int now=1,cnt=0,i=1;i<=n+1&&mm>0;i++){
if(now!=f[i].c){
k[tot++]=cnt;
cnt=1;
now=f[i].c;
mm--;
}else cnt++;
}
int sum=0;
for(int i=1;i<=m;i++){
for(int j=sum+1;j<=k[i]+sum;j++){
for(int l=j+1;l<=sum+k[i];l++){
if((f[j].n+f[l].n)%2!=0) break;
if((f[j].n+f[l].n)%2==0&&j!=l){
ans=(ans+((f[j].n+f[l].n)%10007)*((f[j].v+f[l].v)%10007))%10007;
}
}
}
sum+=k[i];
}cout<<ans%10007;
}