package main

import (
	"fmt"
	"sync"
)

var N int
var Sm = map[int]bool{}
var S []int

func main() {
	fmt.Scan(&N)
	var k int
	fmt.Scan(&k)
	S = make([]int, 0, N)
	for i := 0; i < k; i++ {
		var a, b int
		fmt.Scan(&a, &b)
		for j := a; j <= b; j++ {
			// すでにSに追加していたらスキップ
			if Sm[j] {
				continue
			}
			S = append(S, j)
			Sm[j] = true
		}
	}
	fmt.Println(solve(N))
}

// マス i に到達する方法の個数
func solve(i int) int {
	if i == 1 {
		return 1
	}
	if i < 1 {
		return 0
	}
	if ans, ok := memo[i]; ok {
		return ans
	}
	ans := 0
	wg := sync.WaitGroup{}
	for _, v := range S {
		wg.Add(1)
		func(v int) {
			ans += solve(i - v)
			wg.Done()
		}(v)
	}
	ans %= 998244353
	memo[i] = ans
	return ans
}

var memo = map[int]int{}
