#include <bits/stdc++.h>
using namespace std;
int main() {
  long long N, K;
  cin >> N >> K;
  vector<pair<long long, long long> > A(K);
  vector<long long> val(N + 2, 0);
  long long MAX = -1;
  for (long long i = 0; i < K; i++) {
    cin >> A.at(i).first >> A.at(i).second;
    MAX = max(MAX, A.at(i).second);
  }
  vector<long long> DP(N);
  vector<bool> S(N + 1, false);
  for (long long i = 0; i < K; i++) {
    for (long long j = A.at(i).first; j <= A.at(i).second; j++) {
      S.at(j) = true;
      if (j < N) DP.at(j) = 1;
    }
  }
  DP.at(0) = 0;
  for (long long i = 1; i < N; i++) {
    long long sum = 0;
    for (long long j = 1; j <= min(i, MAX); j++) {
      if (S.at(j) && i - j >= 0) {
        sum += DP.at(i - j);
      }
    }
    DP.at(i) += sum;
    DP.at(i) %= 998244353;
  }
  cout << DP.at(N - 1) << endl;
}
