#include <bits/stdc++.h>
#define fio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define fo(i,a,b,c) for(int i = a ; i<=b ; i+=c)
#define fol(i,a,b,c) for(int i = a ; i>=b ; i-=c)
#define pii pair<int,int>
#define fi first
#define se second
#define pb push_back
#define ins insert
#define pow(z) (1LL*(z)*(z))
#define M 1000000007
using namespace std;
int n, k, p[200005];
pii w[11];
long long t[800005];
void up(int i, int l, int r, int pos, int val){
if(l == r){ t[i] = val; return; }
int m = (l + r) / 2;
if(pos <= m)up(i * 2, l, m, pos, val);
else up(i * 2 + 1, m + 1, r, pos, val);
t[i] = (t[i * 2]%M + t[i * 2 + 1]%M)%M;
}
long long sum(int i, int l, int r, int x, int y){
if(l > y || r < x) return 0;
if(x <= l && r <= y) return t[i];
int m = (l + r) / 2;
return (sum(i * 2, l, m, x, y)%M + sum(i * 2 + 1, m + 1, r, x, y)%M)%M;
}
int main(){
fio;
// freopen("ucute.inp","r",stdin);
// freopen("ucute.out","w",stdout);
cin >> n >> k;
fo(i, 1, k, 1) cin >> w[i].fi >> w[i].se;
sort(w+1,w+k+1);
p[1] = 1;
up(1, 1, n, 1, 1);
fo(i, 2, n, 1){
int last = w[1].fi;
fo(j, 1, k, 1){
int l = max(last, w[j].fi);
int r = min(i - 1, w[j].se);
if(l >= i || l > r) continue;
p[i] = ((p[i]%M) + sum(1, 1, n, i - r, i - l))%M;
last = r + 1;
}
up(1, 1, n, i, p[i]);
}
cout << p[n];
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZmlvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApCiNkZWZpbmUgZm8oaSxhLGIsYykgZm9yKGludCBpID0gYSA7IGk8PWIgOyBpKz1jKQojZGVmaW5lIGZvbChpLGEsYixjKSBmb3IoaW50IGkgPSBhIDsgaT49YiA7IGktPWMpCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGlucyBpbnNlcnQKI2RlZmluZSBwb3coeikgKDFMTCooeikqKHopKQojZGVmaW5lIE0gMTAwMDAwMDAwNwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBuLCBrLCBwWzIwMDAwNV07CnBpaSB3WzExXTsKbG9uZyBsb25nIHRbODAwMDA1XTsKCnZvaWQgdXAoaW50IGksIGludCBsLCBpbnQgciwgaW50IHBvcywgaW50IHZhbCl7CiAgICBpZihsID09IHIpeyB0W2ldID0gdmFsOyByZXR1cm47IH0KICAgIGludCBtID0gKGwgKyByKSAvIDI7CiAgICBpZihwb3MgPD0gbSl1cChpICogMiwgbCwgbSwgcG9zLCB2YWwpOwogICAgZWxzZSB1cChpICogMiArIDEsIG0gKyAxLCByLCBwb3MsIHZhbCk7CiAgICB0W2ldID0gKHRbaSAqIDJdJU0gKyB0W2kgKiAyICsgMV0lTSklTTsKfQoKbG9uZyBsb25nIHN1bShpbnQgaSwgaW50IGwsIGludCByLCBpbnQgeCwgaW50IHkpewogICAgaWYobCA+IHkgfHwgciA8IHgpIHJldHVybiAwOwogICAgaWYoeCA8PSBsICYmIHIgPD0geSkgcmV0dXJuIHRbaV07CiAgICBpbnQgbSA9IChsICsgcikgLyAyOwogICAgcmV0dXJuIChzdW0oaSAqIDIsIGwsIG0sIHgsIHkpJU0gKyBzdW0oaSAqIDIgKyAxLCBtICsgMSwgciwgeCwgeSklTSklTTsKfQoKaW50IG1haW4oKXsKICAgIGZpbzsKLy8gICAgZnJlb3BlbigidWN1dGUuaW5wIiwiciIsc3RkaW4pOwovLyAgICBmcmVvcGVuKCJ1Y3V0ZS5vdXQiLCJ3IixzdGRvdXQpOwoKICAgIGNpbiA+PiBuID4+IGs7CiAgICBmbyhpLCAxLCBrLCAxKSBjaW4gPj4gd1tpXS5maSA+PiB3W2ldLnNlOwogICAgc29ydCh3KzEsdytrKzEpOwogICAgcFsxXSA9IDE7CiAgICB1cCgxLCAxLCBuLCAxLCAxKTsKICAgIGZvKGksIDIsIG4sIDEpewogICAgICAgIGludCBsYXN0ID0gd1sxXS5maTsKICAgICAgICBmbyhqLCAxLCBrLCAxKXsKICAgICAgICAgICAgaW50IGwgPSBtYXgobGFzdCwgd1tqXS5maSk7CiAgICAgICAgICAgIGludCByID0gbWluKGkgLSAxLCB3W2pdLnNlKTsKICAgICAgICAgICAgaWYobCA+PSBpIHx8IGwgPiByKSBjb250aW51ZTsKICAgICAgICAgICAgcFtpXSA9ICgocFtpXSVNKSArIHN1bSgxLCAxLCBuLCBpIC0gciwgaSAtIGwpKSVNOwogICAgICAgICAgICBsYXN0ID0gciArIDE7CiAgICAgICAgfQogICAgICAgIHVwKDEsIDEsIG4sIGksIHBbaV0pOwogICAgfQogICAgY291dCA8PCBwW25dOwp9Cg==