#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll mod = 998244353;
int gcd(int a,int b)
{
	if(b==0)
	return a;
	
	return gcd(b,a%b);
}
int power(int x,int y,int p)
{
	int res=1;
	x=x%p;
	while(y>0)
	{
		if(y&1)
		res=(res*x)%p;
		
		y=y>>1;
		x=(x*x)%p;
	}
	return res;
}
struct Matrix{ 
	int a[2][2] = {{0,0},{0,0}};
	Matrix operator *(const Matrix& other){
		Matrix product;
		for(int i=0;i<2;i++){
			for(int j=0;j<2;j++){
				for(int k=0;k<2;k++){
						product.a[i][k] =product.a[i][k] + (ll)a[i][j]*other.a[j][k];
				}
			}
		}
		return product;
	}
};
int modInverse(int n,int p)
{
	return power(n,p-2,p);
}
int main() {
	// your code goes here
	 ios_base::sync_with_stdio(0);
	 cin.tie(0);
	 int n,k;
	 cin>>n>>k;
	 vector<int> v;
	 set<int> st;
	 for(int i=0;i<k;i++)
	 {
		 int a,b;
		 cin>>a>>b;
		 for(int j=a;j<=b;j++)
		 {
			 st.insert(j);
		 }
	 }
	 set<int> :: iterator itr;
	 for(itr = st.begin();itr!=st.end();itr++)
	 {
		 v.push_back(*itr);
	 }
	 vector<ll> dp(n + 1);
	 dp[0] = 1;
	 //sort(v.begin(),v.end());
	 for(int i=1;i<=n;i++)
	 {
		 for(int j=0;j<(int)v.size();j++)
		 {
			 if(i >= v[j])
			 {
				 dp[i] += dp[i-v[j]];
				 dp[i] %= mod;
			 }
			 else
			 {
				 break;
			 }
		 }
	 }
	 //for(int x:dp)
	 //cout<<x<<" ";
	 //cout<<'\n';
	 cout<<dp[n-1]<<'\n';
	 return 0;
}
