# もらうdpでとく
N, K = map(int, input().split())  # N個のマス, K個の集合
move = []
for _ in range(K):
    l, r = map(int, input().split())
    for d in range(l, r+1):
        move.append(d)
move.sort()

MOD = 998244353
dp = [0]*(N)  # スタート地点0~ゴール地点N-1までのN個
dp[0] = 1
for i in range(N):
    for d in move:
        if i-d < 0:  # 遷移元がないならcontinue
            continue
        dp[i] += dp[i-d]
        dp[i] %= MOD
print(dp[N-1])
