#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const ll N=20;
ll a[N],b[N],n,m;
ll f[(1<<N)],g[(1<<N)];
signed main(){
cin>>n>>m;
for(int i=0;i<n;++i)
cin>>a[i];
for(int i=0;i<m;++i)
cin>>b[i];
fill(f,f+(1<<m),-1);
f[0]=0;
for(int msk=1;msk<(1<<m);++msk){
for(int i=0;i<m;++i){
if(!(msk&(1<<i)))continue;
int msp=msk^(1<<i);
if(f[msp]==-1)continue;
if(g[msp]+b[i]==a[f[msp]]){
if(f[msp]+1>f[msk]){
f[msk]=f[msp]+1;
g[msk]=0;
}
}else if(g[msp]+b[i]<a[f[msp]]&&f[msp]>f[msk]){
f[msk]=f[msp];
g[msk]=g[msp]+b[i];
}
}
}
bool ok=0;
for(int msk=0;msk<(1<<m);++msk)
ok|=(f[msk]==n);
cout<<(ok?"YES":"NO");
}