#include <bits/stdc++.h>
using namespace std;
int N, K;
int L[11], R[11];
int memo[200005];
int solve(int n) {
  printf("%d\n", n);
  if (n < 1) {
    return 0;
  }
  if (n > N) {
    return 0;
  }
  if (memo[n] >= 0) {
    return memo[n];
  }
  int res = 0;
  for (int i = 0; i < K; i++) {
    for (int j = L[i]; j <= R[i]; j++) {
      res = (res + solve(1 + j) + solve(1 + n - j)) % 998244353;
    }
  }
  return (memo[n] = res % 998244353);
}
int dfs(int x, int y) {
  int n = y - x + 1;
  if (n < 1 || n > N) {
    return 0;
  }
  if (memo[n] >= 0) {
    return memo[n];
  }
  int res = 0;
  for (int i = 0; i < K; i++) {
    for (int j = L[i]; j <= R[i]; j++) {
      if (x + j == y) {
        res = (res + 1) % 998244353;
      } else {
        res = (res + dfs(x + j, y)) % 998244353;
      }
    }
  }
  return (memo[n] = res % 998244353);
}
int main() {
  scanf("%d%d", &N, &K);
  for (int i = 0; i < K; i++) {
    scanf("%d%d", L + i, R + i);
  }
  for (int i = 0; i <= N; i++) {
    memo[i] = -1;
  }
  printf("%d\n", dfs(1, N) % 998244353);
}
