#include <bits/stdc++.h>
using namespace std;
map<int, int> paradas;
vector<pair<int, int>> rutas;
int n, m, a, b, cont = 0;
vector<long long> dp;
long long cal(int pos) {
  if (pos == 0) return 0;
  if (dp[pos] == 0) return dp[pos] = cal(pos - 1);
  return dp[pos];
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> m;
  paradas[-1] = 0;
  paradas[0] = 1;
  paradas[n] = 0;
  for (int i = 0; i < m; ++i) {
    cin >> a >> b;
    paradas[a] = 0;
    paradas[b] = 0;
    rutas.push_back({b, a});
  }
  sort(rutas.begin(), rutas.end());
  for (auto i = paradas.begin(); i != paradas.end(); ++i) i->second = cont++;
  dp = vector<long long>(paradas.size(), 0);
  dp[paradas[0]] = 1;
  for (int i = 0; i < rutas.size(); ++i) {
    cal(paradas[rutas[i].first] - 1);
    cal(paradas[rutas[i].second] - 1);
    if (dp[paradas[rutas[i].first]] == 0) {
      dp[paradas[rutas[i].first]] += dp[paradas[rutas[i].first] - 1];
      dp[paradas[rutas[i].first]] %= 1000000007;
    }
    dp[paradas[rutas[i].first]] +=
        dp[paradas[rutas[i].first] - 1] - dp[paradas[rutas[i].second] - 1];
    dp[paradas[rutas[i].first]] +=
        (dp[paradas[rutas[i].first]] < 0) ? 1000000007 : 0;
    dp[paradas[rutas[i].first]] %= 1000000007;
  }
  cal(paradas[n]);
  cal(paradas[n] - 1);
  long long resp = dp[paradas[n]] - dp[paradas[n] - 1];
  (resp < 0) ? resp += 1000000007 : resp;
  cout << resp;
  return 0;
}
