#include <bits/stdc++.h>
#include<vector>
#define int long long
using namespace std;
bool ispalindrome(string& s)
{
    int i=0;
    int j=s.size()-1;
    while(i<=j)
        if(s[i++]!=s[j--])
        return false;
    return true;
}
int modPow(int a,int b,int mod)
{
    while(b>1)
    {
        if(b%2==0)
        {
            a=a*a%mod;
            b/=2;
        }
        else
            return a*modPow(a,b-1,mod)%mod;
    }
    return a;

}
bool prime[2001];
void sieve()
{
    prime[1]=false;
    for(int i=2;i*i<2001;i++)
    {
        if(prime[i])
        {
            for(int j=i*i;j<2001;j+=i)
                prime[j]=false;
        }
    }
}
signed main() {
	//code

	int n,k;
	cin>>n>>k;
	set<int> res;
	for(int i=0;i<k;i++)
    {
        int l,r;
        cin>>l>>r;
        for(int j=l;j<=r;j++)
            res.insert(j);
    }
    vector<int> a;
    for(int i:res)
        a.push_back(i);
    int mod=998244353;
    int dp[n+1]={0};
    dp[1]=1;
    for(int i=1;i<n;i++)
    {
        if(dp[i]>0)
        for(int j=0;j<a.size();j++)
            if(i+a[j]<=n)
        {
            dp[i+a[j]]+=dp[i];
            dp[i+a[j]]=dp[i+a[j]]%mod;
        }
        else
            break;

    }
    cout<<dp[n]<<endl;
}
