#include <bits/stdc++.h>
using namespace std;
long long n, k;
long long l[200010], r[200010];
long long d[400010];
long long mod = 998244353;
long long lowbit(long long x) { return x & -x; }
void update(long long x, long long v) {
  while (x <= n) {
    d[x] += v;
    x += lowbit(x);
  }
}
long long query(long long x) {
  long long res = 0;
  while (x) {
    res += d[x];
    x -= lowbit(x);
  }
  return res;
}
int main() {
  scanf("%lld%lld", &n, &k);
  for (long long i = 1; i <= k; i++) {
    scanf("%lld%lld", &l[i], &r[i]);
  }
  update(1, 1);
  for (long long i = 2; i <= n; i++) {
    long long x = 0;
    for (long long j = 1; j <= k; j++) {
      x += (query(max(i - l[j], 0ll)) % mod -
            query(max(i - r[j] - 1, 0ll)) % mod) %
           mod;
      x = (x % mod + mod) % mod;
    }
    update(i, x);
  }
  printf("%lld", (query(n) % mod - query(n - 1) % mod) % mod);
  return 0;
}
