P1541
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<cmath>
using namespace std;
int a[5001],b[5001],ans=2147483647;
int n,m;
int jsuan() {
int o=1,sum=b[1];
for(int i=1;i<=n;i++){
o+=a[i];
sum+=b[o];
}
return sum;
}
void mon() {
double At=5000,Dt=0.996,Bt=1e-10;
for(register double T=At; T>Bt; T*=Dt) {
int x=rand()%n+1,y=rand()%n+1;
swap(a[x],a[y]);
int sum=jsuan();
if(sum>ans) ans=sum;
else if(exp((sum-ans)/T)<(double(rand())/RAND_MAX))
swap(a[x],a[y]);
}
}
int main() {
srand(rand());
int Maxx=0;
cin>>m>>n;
for(int i=1;i<=m;i++){
cin>>b[i];
}
for(int i=1; i<=n; i++) {
cin>>a[i];
Maxx+=a[i];
}
ans=-2147483647;
for(int i=1; i<=100; i++) {
mon();
}
cout<<ans;
return 0;
}