//CF858B
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, m;
struct node
{
int id, flr;
}a[105];
bool check(int f)
{
for (int i = 1; i <= m; i++)
{
if (ceil(a[i].id * 1.0 / f) != a[i].flr)
return false;
}
return true;
}
signed main()
{
int ans = -1;
scanf("%lld%lld", &n, &m);
for (int i = 1; i <= m; i++)
scanf("%lld%lld", &a[i].id, &a[i].flr);
for (int i = 1; i <= 100; i++)
{
if (check(i))
{
int now = ceil(n * 1.0 / i);
if (ans != -1 && now != ans)
{
printf("-1");
return 0;
}
ans = now;
}
}
printf("%lld", ans);
return 0;
}
1281C - Cut and Paste | 141A - Amusing Joke |
112A - Petya and Strings | 677A - Vanya and Fence |
1621A - Stable Arrangement of Rooks | 472A - Design Tutorial Learn from Math |
1368A - C+= | 450A - Jzzhu and Children |
546A - Soldier and Bananas | 32B - Borze |
1651B - Prove Him Wrong | 381A - Sereja and Dima |
41A - Translation | 1559A - Mocha and Math |
832A - Sasha and Sticks | 292B - Network Topology |
1339A - Filling Diamonds | 910A - The Way to Home |
617A - Elephant | 48A - Rock-paper-scissors |
294A - Shaass and Oskols | 1213A - Chips Moving |
490A - Team Olympiad | 233A - Perfect Permutation |
1360A - Minimal Square | 467A - George and Accommodation |
893C - Rumor | 227B - Effective Approach |
1534B - Histogram Ugliness | 1611B - Team Composition Programmers and Mathematicians |