#include<bits/stdc++.h>
using namespace std;
int n, m, dis[30004], s, t;
queue<int> q;
bool vis[30004];
vector<int> G[30004];
int main() {
scanf("%d%d",&n,&m);
for (int i = 0, b, p; i < m; i++) {
scanf("%d%d",&b,&p);
if (i == 0) s = b;
if (i == 1) t = b;
G[b].push_back(p);
}
memset(dis, -1, sizeof(dis));
dis[s] = 0;
vis[t] = 1;
q.push(s);
while (!q.empty()) {
int u = q.front();
q.pop();
vis[u] = 0;
for (int v : G[u]) {
for (int i = 1; u - i * v >= 0 || u + i * v < n; i++) {
int a = u - i * v, c = u + i * v;
if (a >= 0 && (dis[a] > dis[u] + i || dis[a] == -1)) {
dis[a] = dis[u] + i;
if (!vis[a]) q.push(a), vis[a] = 1;
}
if (c < n && (dis[c] > dis[u] + i || dis[c] == -1)) {
dis[c] = dis[u] + i;
if (!vis[c]) q.push(c), vis[c] = 1;
}
}
}
}
cout << dis[t];
}
95 分。