#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
const static int mx = 200010;
long long BIT[mx];
void update(long long pos, long long val) {
  for (; pos <= mx; pos += pos & (-pos)) BIT[pos] += val;
}
long long query(long long pos) {
  long long sum = 0;
  for (; pos > 0; pos -= pos & (-pos)) sum += BIT[pos];
  return sum;
}
int k;
int L[15], R[15];
int n;
int main() {
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    cin >> L[i] >> R[i];
  }
  update(n, 1);
  for (int i = n - 1; i >= 1; i--) {
    int d = n - i;
    long long ans = 0;
    for (int j = 0; j < k; j++) {
      int l = i + L[j];
      int r = min(i + R[j], n);
      ans += query(r);
      if (l != 1) ans -= query(l - 1);
      ans %= mod;
    }
    if (ans < 0) ans += mod;
    update(i, ans);
  }
  cout << query(1) << '\n';
  return 0;
}
