#include <atcoder/modint>
#include <bits/stdc++.h>
using namespace std;
using namespace atcoder;
using mint = modint998244353;
void solve(int n, vector<int> &L, vector<int> &R) {
int k = L.size();
vector<mint> difference_array_of_dp(n + 2, 0);
// Difference array should always be modified in pairs. Just because
// dp[1] = 1, doesn't mean you can set diff_array[1] = 1
difference_array_of_dp[1] = 1;
difference_array_of_dp[1 + 1] -= 1;
mint running_sum = 0;
for (int i = 1; i <= n; i++) {
running_sum += difference_array_of_dp[i];
mint current_dp = running_sum;
for (int j = 0; j < k; j++) {
if (i + L[j] > n) {
continue;
}
int left = i + L[j];
int right = min(i + R[j], n);
difference_array_of_dp[left] += current_dp;
difference_array_of_dp[right + 1] -= current_dp;
}
}
cout << running_sum.val() << endl;
}
int main() {
int n, k;
cin >> n >> k;
vector<int> L(k), R(k);
for (int i = 0; i < k; i++) {
cin >> L[i] >> R[i];
}
solve(n, L, R);
return 0;
}