#include <bits/stdc++.h>
using namespace std;
const long long md = 998244353;
const long long mn = 2e5 + 10;
long long dp[mn];
long long n;
long long f(const vector<long long>& a, long long idx) {
  if (idx == n) {
    return 1;
  }
  long long& res = dp[idx];
  if (~res) return res;
  res = (0);
  for (long long i = 0; i < a.size(); i++) {
    long long d = a[i];
    if (idx + d > n) break;
    res += f(a, idx + d);
    if (res >= md) res -= md;
  }
  return res;
}
signed main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long k;
  cin >> n >> k;
  unordered_set<long long> st;
  for (long long i = 0; i < (k); i++) {
    long long l, r;
    cin >> l >> r;
    for (; l <= r; l++) st.insert(l);
  }
  vector<long long> a;
  for (auto s : st) {
    a.push_back(s);
  }
  memset(dp, -1, sizeof dp);
  cout << f(a, 1) << '\n';
}
