#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5, mod = 998244353;
int n;
long long t[4 * N];
void padd(int i, long long x, int u = 1, int s = 0, int e = n) {
  if (s > i or e < i) return;
  if (s == e) {
    t[u] += x;
    if (t[u] >= mod) t[u] -= mod;
    return;
  }
  int v = 2 * u, w = 2 * u + 1, m = (s + e) / 2;
  padd(i, x, v, s, m);
  padd(i, x, w, m + 1, e);
  t[u] = t[v] + t[w];
  if (t[u] >= mod) t[u] -= mod;
}
long long csum(int i, int u = 1, int s = 0, int e = n) {
  if (s > i) return 0;
  if (e <= i) return t[u];
  int v = 2 * u, w = 2 * u + 1, m = (s + e) / 2;
  long long ret = csum(i, v, s, m) + csum(i, w, m + 1, e);
  if (ret >= mod) ret -= mod;
  return ret;
}
void radd(int l, int r, long long x) {
  padd(l, x);
  padd(r + 1, -x);
}
long long at(int i) { return csum(i); }
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  int k;
  cin >> n >> k;
  int l[k], r[k];
  for (int i = 0; i < n; ++i) {
    cin >> l[i] >> r[i];
  }
  radd(0, 0, 1);
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < k; ++j) {
      int lf = i + l[j], rt = i + r[j];
      if (lf > n - 1) continue;
      if (rt > n - 1) rt = n - 1;
      radd(lf, rt, at(i));
    }
  }
  cout << at(n - 1) << "\n";
  return 0;
}
