#include <bits/stdc++.h>
#include <atcoder/all>
#define rep(i,n) for(int i=(0);i<(n);i++)

using namespace std;
using namespace atcoder;

typedef long long ll;
using mint = modint998244353;

template<class T> bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T> bool chmin(T &a, const T &b) { if (a>b) { a=b; return 1; } return 0; }

mint op(mint a, mint b){return a + b;}
mint e(){return mint(0);}

int main(){
	cin.tie(0);
	ios::sync_with_stdio(false);

	ll n, k;
	cin >> n >> k;

	vector<ll> l(k), r(k);
	rep(i, k) cin >> l[i] >> r[i];

	lazy_segtree<mint, op, e, mint, op, op, e> lseg(n+1);
	lseg.set(1, mint(1));

	for(ll i = 1; i < n; i++){
		mint v = lseg.get(i);
		rep(j, k){
			if(i + l[j] > n) continue; 
			lseg.apply(i + l[j], min(i + r[j], n) + 1, v);
		}
		// for(int l = 1; l <= n; l++) cout << lseg.get(l).val() << (l == n ? "\n" : " ");
	}

	cout << lseg.get(n).val() << endl;
}
