#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
const int MOD = 998244353;
int n, m;
int L[15], R[15];
int val[N], dp[N];
inline void add(int &x, int y) {
  x += y;
  if (x >= MOD) x -= MOD;
}
void modify(int x, int v) {
  while (x <= n) {
    add(val[x], v);
    x += x & -x;
  }
}
int query(int x) {
  int v = 0;
  while (x) {
    add(v, val[x]);
    x -= x & -x;
  }
  return v;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) scanf("%d%d", L + i, R + i);
  dp[1] = 1;
  modify(1, 1);
  for (int i = 2; i <= n; i++) {
    for (int j = 1; j <= m; j++)
      if (i - L[j] >= 1) {
        add(dp[i], query(i - L[j]) - query(max(0, i - R[j])));
        add(dp[i], MOD);
      }
    modify(i, dp[i]);
  }
  printf("%d\n", dp[n]);
  return 0;
}
