#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch-'0');ch=getchar();}return x*f;}
inline void write(int x){if(x<0)x*=-1,putchar('-');if(x>9)write(x/10);putchar(x%10+'0');return;}
inline int max(int x,int y){return (x<y)?y:x;}
inline int min(int x,int y){return (x<y)?x:y;}
int k,n,c[20],val[N],sum[1<<20],cnt[1<<20],sumc,sumv;
signed main(){
k=read();n=read();
for(int i=1;i<=k;i++){
c[i]=read();
sumc+=c[i];
}
for(int i=1;i<=n;i++){
val[i]=read();
sumv+=val[i];
}
if(sumc<sumv){
puts("-1");
return 0;
}
else if(sumc==sumv){
puts("0");
return 0;
}
for(int i=0;i<(1<<k);i++) sum[i]=sumc;
for(int i=0;i<(1<<k);i++)
for(int j=1;j<=k;j++){
if(i&(1<<(j-1))){
cnt[i]++;
sum[i]-=c[j];
}
}
int ans=-1;
for(int i=0;i<(1<<k);i++){
if(sumc-sum[i]<sumv||cnt[i]>k) continue;
ans=max(ans,sum[i]);
}
sort(sum,sum+(1<<k));
for(int i=0;i<(1<<k);i++){
if(sumc-sum[i]<sumv||cnt[i]>k) continue;
}
write(ans);
return 0;
}