#include <bits/stdc++.h>
using namespace std;
const long long int mod = 998244353;
const long long int INF = (1LL << 50);
const double EPSILON = 0.001;
const int N = 1000005;
long long int dp[N];
long long int add(long long int a, long long int b) {
  a += b;
  if (a >= mod) a -= mod;
  return a;
}
long long int sub(long long int a, long long int b) {
  a -= b;
  if (a < 0) a += mod;
  return a;
}
int main() {
  cin.tie(NULL), cout.sync_with_stdio(true);
  int n, k;
  cin >> n >> k;
  vector<pair<int, int> > v(k);
  dp[1] = 1;
  for (int i = 0; i < k; i++) {
    cin >> v[i].first >> v[i].second;
  }
  long long int ans = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < k; j++) {
      int upp = max(0, min(i, i - v[j].first));
      int dwn = max(0, min(upp, i - v[j].second));
      dp[i] = add(dp[i], sub(dp[upp], (dwn >= 1 ? dp[dwn - 1] : 0)));
    }
    ans = dp[i] % mod;
    dp[i] += dp[i - 1];
  }
  cout << ans << '\n';
  return 0;
}
