#include <bits/stdc++.h>
using namespace std;
template <typename T>
struct BIT {
  int n;
  vector<T> d;
  BIT(int n = 0) : n(n), d(n + 1) {}
  void add(int i, T x = 1) {
    for (i++; i <= n; i += i & -i) {
      d[i] = (d[i] + x) % 998244353LL;
    }
  }
  T sum(int i) {
    T x = 0;
    for (i++; i; i -= i & -i) {
      x = (x + d[i]) % 998244353LL;
    }
    return x % 998244353LL;
  }
};
int main() {
  int n, k;
  cin >> n >> k;
  vector<pair<int, int> > lr(k);
  for (int i = 0; i < (k); i++) cin >> lr[i].first >> lr[i].second;
  BIT<long long> bit(n + 1);
  bit.add(1, 1);
  bit.add(2, -1);
  for (int i = 1; i <= (n); i++) {
    long long cv = bit.sum(i) % 998244353LL;
    for (int j = 0; j < (k); j++) {
      int l = lr[j].first;
      int r = lr[j].second;
      l = i + l;
      r = i + r + 1;
      if (l > n) continue;
      if (r > n) r = n + 1;
      bit.add(l, cv);
      bit.add(r, -cv);
    }
  }
  cout << bit.sum(n) % 998244353LL << endl;
  return 0;
}
