#include <bits/stdc++.h>
static const long long MOD_NUM = 998244353;
template <class _T>
static void get(_T& a) {
  std::cin >> a;
}
template <class _T>
static void get(_T& a, _T& b) {
  std::cin >> a >> b;
}
template <class _T>
static void get(_T& a, _T& b, _T& c) {
  std::cin >> a >> b >> c;
}
template <class _T>
static _T tp_abs(_T a) {
  if (a < (_T)0) {
    a *= (_T)-1;
  }
  return a;
}
static void D();
int main() {
  D();
  fflush(stdout);
  return 0;
}
static void D() {
  int N, K;
  get(N, K);
  std::vector<int> lr;
  int l, r;
  for (int i = 0; i < K; i++) {
    get(l, r);
    for (int i = l; i <= r; i++) {
      lr.push_back(i);
    }
  }
  std::sort(lr.begin(), lr.end());
  int lrCnt = lr.size();
  std::vector<long long> dp(N + 1, 0);
  dp[1] = 1;
  for (int i = 2; i <= N; i++) {
    for (int j = 0; j < lrCnt; j++) {
      if (i - lr[j] < 1) break;
      dp[i] += dp[i - lr[j]];
      dp[i] %= MOD_NUM;
    }
  }
  printf("%lld\n", dp[N]);
}
