#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define all(x) x.begin(),x.end()
#define ff first
#define ss second
#define yes "Yes"
#define no "No"
#define pp pop_back
using namespace std;
const int INF=1e9+7;
const int maxN=3e4+3;
int b[maxN],p[maxN],dis[maxN];
int n,m;
void dfs(int pos,int cnt,int p,int s){
while (pos >= 0 && pos < n) {
dis[pos] = min(dis[pos],cnt);
if (s == 1) pos += p;
else pos -= p;
cnt++;
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>m;
for (int i=0;i<n;i++) dis[i]=INF;
for (int i=0;i<m;i++){
cin>>b[i]>>p[i];
}
dis[b[0]]=0;
for (int k=0;k<m;k++){
for (int i=0;i<m;i++){
if (dis[b[i]]!=INF){
dfs(b[i],dis[b[i]],p[i],1);
dfs(b[i],dis[b[i]],p[i],2);
}
}
}
cout << (dis[b[1]] == INF ? -1 : dis[b[1]]);
return 0;
}