#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 5e5 + 5, mod = 1e9 + 7;
int pre[26][maxn], f[26][maxn];
int st[3][4 * maxn];
void update(int b, int id, int l, int r, int u, int v, int val){
if(v < l || r < u) return;
if(u <= l && r <= v) st[b][id] = max(st[b][id], val);
else{
int mid = (l + r) / 2;
st[b][id * 2] = max(st[b][id * 2], st[b][id]);
st[b][id * 2 + 1] = max(st[b][id * 2 + 1], st[b][id]);
update(b, id * 2, l, mid, u, v, val);
update(b, id * 2 + 1, mid + 1, r, u, v, val);
}
}
int get(int b, int id, int l, int r, int p){
if(l == r) return st[b][id];
else{
int mid = (l + r) / 2;
st[b][id * 2] = max(st[b][id * 2], st[b][id]);
st[b][id * 2 + 1] = max(st[b][id * 2 + 1], st[b][id]);
if(p <= mid) return get(b, id * 2, l, mid, p);
else return get(b, id * 2 + 1, mid + 1, r, p);
}
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n, m; cin >> n >> m;
//điều kiện a, b
//với a < b thì i từ a đến b - 1 phải thỏa s[i] >= s[i + 1]
//với a > b thì i từ b đến a - 1 phải thỏa s[i] <= s[i + 1]
for(int i = 1; i <= m; i++){
int a, b; cin >> a >> b;
if(a < b) update(1, 1, 1, n, a, b - 1, a);
else update(2, 1, 1, n, b, a - 1, a);
}
for(int c = 0; c < 26; c++) pre[c][1] = f[c][1] = 1;
for(int i = 2; i <= n; i++){
int incr = get(1, 1, 1, n, i - 1), decr = get(2, 1, 1, n, i - 1);
for(int c = 0; c < 26; c++){
for(int d = 0; d < 26; d++){
if(d == c) continue;
int limit = (d < c) ? incr : decr;
if(limit <= i - 1) (f[c][i] += pre[d][i - 1] - pre[d][limit] + mod) %= mod;
}
pre[c][i] = (pre[c][i - 1] + f[c][i]) % mod;
}
}
int ans = 0;
for(int k = 1; k <= n; k++){
for(int c = 0; c < 26; c++) (ans += f[c][k]) %= mod;
}
cout << ans;
}