#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n,m;
int a[N],b[N],c[N],d[N];
bool check(int mid){
memset(c,0,sizeof(c));
for(int i=1;i<=m;i++){
c[b[i]]+=mid;
for(int j=1;j<=n;j++){
c[j]+=max(0,mid-abs(i-j));
}
}
for(int i=1;i<=n;i++){
if(c[i]<a[i]){
return 0;
}
}
return 1;
}
int main(){
ios::sync_with_stdio(false);
scanf("%d%d",&n,&m);
int r;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
r=max(a[i],r);
}
for(int i=1;i<=m;i++){
scanf("%d",&b[i]);
}
int l=0,ans=1e9;
while(l<=r){
int mid=(l+r)/2;
if(check(mid)){
ans=min(ans,mid);
}
if(check(mid)){
r=mid-1;
}
else{
l=mid+1;
}
}
cout<<ans;
return 0;
}