#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
typedef long long ll;
const ll N=4e4+10,M=129,P=65537,K=17;
ll d[P],ds[K][N],a[K],b[M];
ll q[N],n,k,m,f,c;
int main(){
scanf("%lld%lld%lld",&n,&k,&m);
for(ll i=1;i<=k;i++){
scanf("%lld",&a[i*2-1]);
a[i*2]=a[i*2-1]+1;
}
for(ll i=1;i<=m;i++){
scanf("%lld",&b[i*2]);
b[i*2-1]=-b[i*2];
}
for(ll i=1;i<=2*k;i++){
c++;
if(a[i]!=a[i+1]&&c%2){
a[f++]=a[i],c=0;}
}
memset(ds,0x3f,sizeof(ds));
memset(d,0x3f,sizeof(d)),d[0]=0;
for(ll i=0;i<f;i++){
ll h=1,t=1;
q[1]=a[i],ds[i][a[i]]=0;
while(h<=t){
for(ll j=1;j<=2*m;j++){
ll tp=q[h]+b[j];
if(tp>0&&tp<=n+1&&ds[i][tp]>1e9){
ds[i][tp]=ds[i][q[h]]+1;
q[++t]=tp;
}
}
h++;
}
}
for(ll i=0;i<1<<f;i++){
for(ll j=0;j<f;j++){
ll &tp=d[i|(1<<j)];
tp=min(tp,d[i]+ds[j][n+1]);
}
for(ll j=0;j<f;j++){
for(ll k=0;k<f;k++){
if(j==k) continue;
ll &tp=d[i|(1<<j)|(1<<k)];
tp=min(tp,d[i]+ds[j][a[k]]);
}
}
}
printf("%lld",d[(1<<f)-1]);
return 0;
}