#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define MOD 1000000007
using Graph = vector<vector<int>>;
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <boost/multiprecision/cpp_int.hpp>
namespace mp = boost::multiprecision;
// 任意長整数型
using Bint = mp::cpp_int;
// 仮数部が1024ビットの浮動小数点数型(TLEしたら小さくする)
using Real = mp::number<mp::cpp_dec_float<1024>>;

int main (){
  int N,K;
  cin>>N>>K;
  vector<long long>dp(400020,0);
  vector<long long>S(0);
  rep(i,K){
    int l,r;
    cin>>l>>r;
    for(int j=l;j<=r;j++){
      S.push_back(j);
    }
  }
  //sort(S.begin(), S.end());
  dp[1]=1;
  for(long long i=1;i<=N;i++){
    if(dp[i]!=0){
      for(int j : S){
        dp[i+j]=(dp[i+j]+dp[i])%998244353;
      }
    }
  }
  cout<<dp[N]%998244353;
}
