#include <bits/stdc++.h>
using namespace std;
constexpr long long mod = 998244353;
template <class T>
struct Fenwick {
  vector<T> bit;
  int N;
  Fenwick(int n) : N(n) { bit.assign(n + 1, 0); }
  void add(int a, T w) {
    for (int x = ++a; x <= N; x += x & -x) bit[x] = (bit[x] + w + mod) % mod;
  }
  T sum(int a) {
    T ret = 0;
    for (int x = a; x > 0; x -= x & -x) ret = (ret + bit[x] + mod) % mod;
    return ret;
  }
};
int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  int N, K;
  cin >> N >> K;
  vector<int> W(N + 2, 0);
  for (int i = 0; i < K; i++) {
    int L, R;
    cin >> L >> R;
    W[L]++, W[R + 1]--;
  }
  for (int i = 1; i <= N; i++) {
    W[i + 1] += W[i];
  }
  vector<pair<int, int>> V;
  int con = 0;
  for (int i = 0; i <= N; i++) {
    if (W[i])
      con++;
    else {
      if (con) V.emplace_back(i - con, i);
      con = 0;
    }
  }
  Fenwick<long long> DP(N + 2);
  DP.add(1, 1);
  DP.add(2, mod - 1);
  for (int i = 1; i < N; i++) {
    long long Cur = DP.sum(i + 1);
    for (auto &[l, r] : V) {
      DP.add(i + l, Cur);
      DP.add(min(N + 1, i + r), mod - Cur);
    }
  }
  cout << DP.sum(N + 1) << "\n";
  return 0;
}
