#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=10007;
const int N=1e5+10;
struct edge{
ll b;
ll c;
ll n;
}a[N];
ll n,m,ans,tot;
inline ll read(){
ll x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9')
x=x*10+ch-'0',ch=getchar();
return x*f;
}
void print(ll x){
if(x<0)
putchar('-'),x=-x;
if(x>9)
print(x/10);
putchar(x%10+'0');
return;
}
bool cmp(edge x,edge y){
if(x.c==y.c)return x.b<y.b;
return x.c<y.c;
}
int main(){
n=read();
m=read();
for(int i=1;i<=n;i++){
a[i].b=i;
a[i].n=read();
}
for(int i=1;i<=n;i++){
a[i].c=read();
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<n;i++){
for(int j=i+1;j<=n&&a[j].c==a[i].c;j++){
if((a[j].b-a[i].b)%2==0){
ans+=(a[i].b+a[j].b)%mod*(a[i].n+a[j].n)%mod;
}
}
}
print((ans+mod)%mod);
return 0;
}