0分求调
#include<bits/stdc++.h>
using namespace std;
int n,m,num[100010],c,s;
int x[100010][2],a[100010][2],xa[100010][2],k[100010][2];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>num[i];
for(int i=1;i<=n;i++){
cin>>c;
k[c][i%2]++;
x[c][i%2]=(x[c][i%2]+i%10007)%10007;
a[c][i%2]=(a[c][i%2]+num[i]%10007)%1007;
xa[c][i%2]=(xa[c][i%2]+i%10007*num[i]%10007)%10007;
}
for(int i=1;i<=m;i++)
for(int j=0;j<2;j++)
if(k[i][j]>1){
s=(s+x[i][j]*a[i][j])%10007;
s=(s+(k[i][j]-2)*xa[i][j])%10007;
}
cout<<s;
return 0;
}