#include <bits/stdc++.h>
using namespace std;
int N, K, mod = 998244353;
vector<pair<int, int> > avail;
long long cache[1000002];
long long dp(int i) {
  if (i == N)
    return 1;
  else if (i > N)
    return 0;
  if (cache[i] != -1) return cache[i];
  long long result = 0;
  for (auto k : avail) {
    for (int j = k.first; j <= k.second; j++) {
      result += dp(i + j);
      result %= mod;
    }
  }
  return cache[i] = result;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> N >> K;
  avail.clear();
  memset(cache, -1, sizeof cache);
  for (int i = 0; i < K; i++) {
    int X, Y;
    cin >> X >> Y;
    avail.push_back({X, Y});
  }
  cout << dp(1) << "\n";
}
