#include <bits/stdc++.h>
using namespace std;
const long long num = 1e9 + 7;
long long mod(long long n) { return (n % num + num) % num; }
long long add(long long x, long long y) { return mod(mod(x) + mod(y)); }
long long mult(long long x, long long y) { return mod(mod(x) * mod(y)); }
long long sub(long long x, long long y) { return mod(mod(x) - mod(y)); }
long long pt(long long n, long long p) {
  if (p == 0) return 1;
  if (p == 1) return n % num;
  long long t = pt(n, p / 2);
  if (p % 2 == 0)
    return mult(t, t);
  else
    return mult(n, mult(t, t));
}
long long dp[200002];
long long n, k;
long long mc = 998244353;
long long ok(set<long long>& st, long long i) {
  if (i == n) return 1;
  if (dp[i] != -1) return dp[i];
  long long tt = 0;
  for (auto it : st) {
    if (i + it <= n) {
      tt += ok(st, i + it);
      tt = tt % mc;
    }
  }
  return dp[i] = tt % mc;
}
void solve() {
  cin >> n >> k;
  set<long long> st;
  for (long long i = 0; i < k; i++) {
    long long x, y;
    cin >> x >> y;
    for (long long j = x; j <= y; j++) st.insert(j);
  }
  memset(dp, -1, sizeof(dp));
  cout << ok(st, 1) << endl;
}
int main() {
  long long t;
  t = 1;
  while (t--) {
    solve();
  }
}
