#include <bits/stdc++.h>
using namespace std;
long long int n, m;
vector<pair<long long int, long long int> > v;
long long int mod = 1e9 + 7;
map<long long int, long long int> mp, revmp;
long long int BIT[200010];
void updateBit(int ind, int val) {
  while (ind <= 200000) {
    BIT[ind] += (val);
    BIT[ind] %= mod;
    ind += ind & -ind;
  }
}
long long int queryBit(int ind) {
  long long int ans = 0;
  while (ind > 0) {
    ans += BIT[ind];
    ans %= mod;
    ind -= ind & -ind;
  }
  return ans;
}
int main() {
  set<long long int> st;
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    long long int a, b;
    cin >> a >> b;
    v.push_back({b, a});
    st.insert(a);
    st.insert(b);
  }
  st.insert(0);
  st.insert(n);
  int ind = 0;
  for (auto it : st) {
    mp[it] = ++ind;
    revmp[ind] = it;
  }
  sort(v.begin(), v.end());
  updateBit(mp[0], 1);
  for (int i = 0; i < m; i++) {
    long long int a = v[i].second;
    long long int b = v[i].first;
    long long int sum = (queryBit(mp[b] - 1) - queryBit(mp[a] - 1) + mod) % mod;
    updateBit(mp[b], sum);
  }
  long long int ans = (queryBit(mp[n]) - queryBit(mp[n] - 1) + mod) % mod;
  cout << ans << endl;
  return 0;
}
