#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-10;
const int64_t INF = 1e9;
const int QMAX = 500010;
const long long MOD = 998244353;
int n;
long long dat[QMAX];
void init(int _n) {
  n = 1;
  while (n < _n) n *= 2;
  for (int i = 0; i < 2 * n - 1; i++) dat[i] = 0;
}
long long val(int k) {
  k += n - 1;
  long long ans = dat[k];
  while (k > 0) {
    k = (k - 1) / 2;
    ans = (ans + dat[k]) % MOD;
  }
}
void add(int a, int b, long long x, int k, int l, int r) {
  if (r <= a || b <= l) return;
  if (a <= l && r <= b) {
    dat[k] = (dat[k] + x) % MOD;
  } else {
    add(a, b, x, k * 2 + 1, l, (l + r) / 2);
    add(a, b, x, k * 2 + 2, (l + r) / 2, r);
  }
}
int main() {
  int m, k;
  int l[10], r[10];
  scanf("%d%d", &m, &k);
  for (int i = 0; i < k; ++i) {
    scanf("%d%d", &l[i], &r[i]);
  }
  init(m + 2);
  add(1, 2, 1, 0, 0, n);
  for (int i = 1; i < m; ++i) {
    long long a = val(i);
    for (int j = 0; j < k; ++j) {
      if (i + l[j] > n) continue;
      int ed = min(i + r[j], n);
      add(i + l[j], ed + 1, a, 0, 0, n);
    }
  }
  printf("%lld\n", val(m));
  return 0;
}
