#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse4")
using namespace std;
inline long long in() {
  long long x;
  scanf("%lld", &x);
  return x;
}
const long long mod = 998244353;
const long long N = 3e5 + 4;
long long tree[N], n, k, r[11], l[11];
void add(long long x, long long val) {
  while (x <= n) {
    tree[x] += val;
    tree[x] %= mod;
    x += (x & -x);
  }
}
long long sum(long long x) {
  long long ans = 0;
  while (x >= 1) {
    ans += tree[x];
    ans %= mod;
    x -= (x & -x);
  }
  return ans;
}
int32_t main() {
  n = in();
  k = in();
  for (long long i = 1; i <= k; i++) l[i] = in(), r[i] = in();
  add(1, 1);
  add(2, -1);
  for (long long i = 1; i <= n; i++) {
    long long val = sum(i);
    if (val > 0) {
      for (long long j = 1; j <= k; j++) {
        add(i + l[j], val);
        add(i + r[j] + 1, -val);
      }
    }
  }
  cout << sum(n) % mod;
}
