#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
long long n, st[200005];
int k, tim[200005];
vector<int> v;
long long dfs(int sum, int cnt, int p) {
  long long res = 0;
  if (sum == n) {
    res = st[cnt];
    for (int i = 0; i < v.size(); i++) res /= st[tim[v[i]]];
    return res;
  }
  for (int i = p; i < v.size(); i++) {
    if (sum + v[i] > n) break;
    tim[v[i]]++;
    res += dfs(sum + v[i], cnt + 1, i);
    tim[v[i]]--;
    res %= MOD;
  }
  return res % MOD;
}
int main() {
  cin >> n >> k;
  n--;
  st[0] = 1;
  for (int i = 1; i <= n + 2; i++) st[i] = st[i - 1] * i % MOD;
  while (k--) {
    int l, r;
    cin >> l >> r;
    for (int i = l; i <= r; i++) v.push_back(i);
  }
  sort(v.begin(), v.end());
  cout << dfs(0, 0, 0) % MOD << endl;
  return 0;
}
