#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using P = pair<ll, ll>;
const ll MOD = 998244353;
const ll INF = 1ll << 60;
int dx[4]{0, 1, 0, -1};
int dy[4]{1, 0, -1, 0};
template <typename T>
struct BIT {
  int n;
  vector<T> bit[2];
  BIT(int n_) { init(n_); }
  void init(int n_) {
    n = n_ + 1;
    for (int p = 0; p < 2; p++) bit[p].assign(n, 0);
  }
  void add_sub(int p, int i, T x) {
    for (int idx = i; idx < n; idx += (idx & -idx)) {
      (bit[p][idx] += x) %= MOD;
    }
  }
  void add(int l, int r, T x) {
    add_sub(0, l, -x * (l - 1));
    add_sub(0, r, x * (r - 1));
    add_sub(1, l, x);
    add_sub(1, r, -x);
  }
  T sum_sub(int p, int i) {
    T s(0);
    for (int idx = i; idx > 0; idx -= (idx & -idx)) {
      (s += bit[p][idx]) %= MOD;
    }
    return s;
  }
  T sum(int i) {
    ll res = (sum_sub(1, i) * i) % MOD;
    return (res + sum_sub(0, i)) % MOD;
  }
};
int main(int argc, char **argv) {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  BIT<ll> bt(2 * 100000 + 10);
  bt.add(1, 2, 1);
  ll N, K;
  cin >> N >> K;
  vector<ll> L(N), R(N);
  for (ll i = (0); i < (ll)(K); ++i) cin >> L[i] >> R[i], R[i]++;
  for (ll j = (0); j < (ll)(N); ++j) {
    for (ll i = (0); i < (ll)(K); ++i) {
      bt.add(min(j + L[i], N + 1), min(j + R[i], N + 1),
             bt.sum(j) - bt.sum(j - 1));
    }
  }
  std::cout << bt.sum(N) - bt.sum(N - 1) << std::endl;
  return 0;
}
