#include <bits/stdc++.h>
using namespace std;
long long n, k;
const long long N = 2e5 + 5;
long long dp[N];
long long go(long long pos, vector<long long> &nums) {
  if (pos == n) {
    return 1;
  }
  if (pos > n) {
    return 0;
  }
  if (dp[pos] != -1) {
    return dp[pos];
  }
  long long ans = 0;
  for (long long i = 0; i < nums.size(); i++) {
    ans = (ans % 998244353 + go(pos + nums[i], nums) % 998244353) % 998244353;
  }
  return dp[pos] = ans;
}
void solve() {
  cin >> n >> k;
  set<long long> st;
  vector<long long> nums;
  for (long long i = 1; i <= k; i++) {
    long long l, r;
    cin >> l >> r;
    for (long long j = l; j <= r; j++) {
      if (st.find(j) == st.end()) {
        st.insert(j);
        nums.push_back(j);
      }
    }
  }
  memset(dp, -1, sizeof dp);
  long long ans = go(1, nums);
  cout << ans << "\n";
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  solve();
  return 0;
}
