#include<bits/stdc++.h>
#include<boost/dynamic_bitset.hpp>
using namespace std;
using u64 = uint64_t;
using s64 = int64_t;

int main() {
	u64 N, K;
	cin >> N >>K;

	u64 mod = 998244353;
	deque<u64> S;
	vector<u64> dp(N);
	dp[0] = 1;

	for(u64 i=0; i<K; i++) {
		u64 L, R;
		cin >> L >> R;
		for(u64 j=L; j<=R; j++) {
			S.push_back(j);
		}
	}
	
	for(u64 i=0; i<N; i++) {
		u64 c = S.size();
		for(u64 k=0; k<c; k++) {
			auto d = S.front();
			S.pop_front();
			if(i + d < N) {
				dp[i+d] = (dp[i+d] + dp[i]) % mod;
				S.push_back(d);
			}
		}
	}

	cout << dp[N-1] << endl;
    return 0;
}
