#include <bits/stdc++.h>
#define rep(i,n) for (int i=0; i<n; i++)
using namespace std;

int main() {
  int N, K;
  cin >> N >> K;
  // 集合S
  vector<int> S;
  rep(i,K){
    int a, b;
    cin >> a >> b;
    for(int j=a; j<=b; j++){
      S.push_back(j);
    }
  }
  //sort(S.begin(), S.end()); //S昇順に並べ替え いる??
  //移動距離はN-1
  int len = S.size();
  vector<long long> A(N);
  A.at(N-1)=1;
  rep(i,N-1){
    for(int j=len-1,j>=0; j--){
      if(N-1-i>=S.at(j)){
        A.at(N-1-i-S.at(j))+=A.at(N-1-i);
        //if(A.at(N-1-i-S.at(j))>998244353) A.at(N-1-i-S.at(j))%=998244353;
      }
    }
    //A.at(N-1-i)=0;
    A.erase(A.begin()+N-1-i);
  }
  
  
  cout << A.at(0)%998244353 << endl;
  return 0;
}