#include<bits/stdc++.h>
#define lg long long int
#define loop(i,s,e) for(lg i=s;i<=e;i++)
#define iloop(i,s,e) for(lg i=e;i>=s;i--)
#define pb push_back
#define mp make_pair
#define mod 998244353
using namespace std;

lg min(lg a,lg b)
{return a<b?a:b;}
lg max(lg a,lg b)
{return a>b?a:b;}
lg lcm(lg a ,lg b)
{
    return (a*b)/__gcd(a,b);
}

lg sol(vector<lg>& dp,vector<lg>& d,lg in,lg dn,lg n)
{
    if(dp[in]!=-1) return dp[in];
    else
    {
        dp[in] = 0;
        for(lg j=0;j<dn;j++)
        {
            if(in+d[j]>=n) break;

            dp[in]+=sol(dp,d,in+d[j],dn,n)%mod;
            dp[in]%=mod;
        }
        return dp[in]%mod;
    }
}
int main()
{
    lg n,k;
    cin>>n>>k;
    vector<lg>d;
    vector<lg>a(n,-1);
    a[n-1]=1;
    for(lg i=0;i<k;i++)
    {
        lg a,b;
        cin>>a>>b;
        for(lg j=a;j<=b;j++)
            d.pb(j);
    }
    lg dn = d.size();
    sort(d.begin(),d.end());

    cout<<sol(a,d,0,dn,n)<<endl;
}
