#include<bits/stdc++.h>
#define maxn 1000010
using namespace std;
int c[maxn],v[maxn],f[1<<16],sum[maxn];
int main()
{
int n,k;
cin>>n>>k;
for(int i=1;i<=k;++i)cin>>v[i];
for(int i=1;i<=n;++i)cin>>c[i],sum[i]=sum[i-1]+c[i];
for(int s=0;s<(1<<k);++s)
{
for(int i=1;i<=k;++i)
{
if((s&(1<<(i-1)))==0)continue;
int pos=upper_bound(sum+1,sum+1+n,sum[f[s^(1<<(i-1))]]+v[i])-sum-1;
f[s]=max(f[s],pos);
}
}
int ans=-1;
for(int s=0;s<(1<<k);++s)
if(f[s]==n)
{
int cnt=0;
for(int i=1;i<=k;++i)
if((s&(1<<(i-1)))==0)cnt+=v[i];
ans=max(ans,cnt);
}
cout<<ans<<endl;
return 0;
}