#include<bits/stdc++.h>
using namespace std;
long long i=0,j,f[10000001],x[100000001],n,m,s;
struct dt
{
queue<long long>a;
queue<long long>k;
}ans;
int main()
{
cin>>m>>n>>s;
for(i=1; i<=s; i++)
{
cin>>x[i];
}
ans.a.push(n);
ans.k.push(0);
while(1)
{
bool fl=0;
if(!(ans.a.front()+x[ans.a.front()]>s)&&f[ans.a.front()+x[ans.a.front()]]==0)
{
f[ans.a.front()+x[ans.a.front()]]=1;
ans.a.push(ans.a.front()+x[ans.a.front()]);
ans.k.push(ans.k.front()+1);
fl=1;
}
if(!(ans.a.front()-x[ans.a.front()]<1)&&f[ans.a.front()-x[ans.a.front()]]==0)
{
f[ans.a.front()-x[ans.a.front()]]=1;
ans.a.push(ans.a.front()-x[ans.a.front()]);
ans.k.push(ans.k.front()+1);
fl=1;
}
if(fl==0&&i!=0&&ans.a.size()==0)
{
cout<<-1;
return 0;
}
if(ans.a.front()==m)
{
cout<<ans.k.front();
return 0;
}
ans.a.pop();
ans.k.pop();
i++;
}
}