#include <bits/stdc++.h>
using namespace std;
long long int binpow(long long int a, long long int b) {
  if (a == 0) return 0;
  if (b == 0) return 1;
  long long int ans = 1;
  while (b > 0) {
    if (b & 1) ans = ans * a;
    a = a * a;
    b = b >> 1;
  }
  return ans;
}
template <typename T>
T Min(T a, T b) {
  return a < b ? a : b;
}
template <typename T>
T Max(T a, T b) {
  return a > b ? a : b;
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int n;
  cin >> n;
  vector<long long int> a(n + 2, 0);
  long long int ans = 0;
  int k;
  cin >> k;
  int l, r;
  for (int i = 0; i < (k); ++i) {
    cin >> l >> r;
    a[l]++, a[r + 1]--;
  }
  for (int i = 0; i < (n + 1); ++i) a[i + 1] += a[i];
  vector<int> b;
  for (int i = 0; i < (n); ++i)
    if (a[i + 1]) b.push_back(i + 1);
  vector<long long int> an(n + 1, 0);
  an[n] = 1;
  for (int k = n - 1; k >= 1; --k) {
    for (auto t : b) {
      if (t + k > n) break;
      an[k] = (an[k] + an[t + k]) % 998244353;
    }
  }
  cout << an[1] << '\n';
  return 0;
}
