#include<bits/stdc++.h>
using namespace std;
long long ans;
long long n,m,k;
long long f[100005];
struct mm
{
long long x,y,z;
}a[100005];
bool cmp(mm xx,mm yy)
{
if(xx.y==yy.y)
{
return xx.z<yy.z;
}
else
{
return xx.y<yy.y;
}
}
int read()
{
int s=0,f=1;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
{
f=-1;
}
ch=getchar();
}
while(isdigit(ch))
{
s=s*10+ch-'0';
ch=getchar();
}
return s*f;
}
void write(int x)
{
if(x<0)
{
putchar('-');
x=-x;
}
if(x>9)
{
write(x/10);
}
putchar(x % 10 + '0');
return ;
}
int main()
{
n=read();
m=read();
for(int i=1;i<=n;i++)
{
a[i].x=read();
a[i].z=i;
}
for(int i=1;i<=n;i++)
{
a[i].y=read();
f[a[i].y]++;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i+=f[k])
{
k++;
for(int j=i;j<=i+f[k]-1;j++)
{
for(int t=j+1;t<=i+f[k]-1;t++)
{
if(a[t].y!=a[j].y)
{
break;
}
else if((a[t].z+a[j].z)%2==0)
{
ans=(ans+(a[t].z+a[j].z)*(a[t].x+a[j].x))%10007;
}
}
}
}
write(ans%10007);
// putchar(' ');
return 0;
}