#include <bits/stdc++.h>
using namespace std;

#define ll long long int
#define All(a) (a).begin(),(a).end()

// Remember v.shrink_to_fit() when erasing
ll cnt=0;
int n;
set<ll> st;

void search(int a){
  cout << a << endl;
  if(a==n){
    cnt=(cnt+1)%998244353;
    return;
  }
  for(auto i=st.begin(); i != st.end(); i++){
    if((a+*i)<=n)search(a+*i);
    else return;
  }
}
void solve(){
  int k,l,r,t;
  auto itr=st.begin();
  cin >>n>>k;
  for(int i=0;i<n;i++){
    cin>>l>>r;
    for(int j=l; j<=r; j++){
      st.insert(j);
    }
  }

  ll dp[2*n]={};
  dp[1]=1;
  for(int i=1; i < n; i++){
    if (dp[i]!=0)
    { 
      for(auto itr=st.begin(); itr != st.end(); itr++){
        dp[i+*itr]=(dp[i+*itr]+dp[i]+1)%998244353;
      }
    }
  }
  printf("%lld\n",dp[n]);
}
int main(){
  /*
  int q;
  scanf("%d",&q);
  while(--q)solve();
  */
  solve();

  return 0;
}