D - Leaping Tak 解説 /

実行時間制限: 2 sec / メモリ制限: 1024 MB

配点 : 400

問題文

一列に並んだ N マスから成るマス目があり、マスには左から順番に1, 2, \ldots, N の番号がついています。

このマス目で暮らしている高橋君は、現在マス 1 にいて、後述の方法で移動を繰り返してマス N へ行こうとしています。

10 以下の整数 K と、共通部分を持たない K 個の区間 [L_1, R_1], [L_2, R_2], \ldots, [L_K, R_K] が与えられ、これらの区間の和集合を S とします。ただし、区間 [l, r]l 以上 r 以下の整数の集合を表します。

  • マス i にいるとき、S から整数を 1 つ選んで (d とする)、マス i + d に移動する。ただし、マス目の外に出るような移動を行ってはならない。

高橋君のために、マス N に行く方法の個数を 998244353 で割った余りを求めてください。

制約

  • 2 \leq N \leq 2 \times 10^5
  • 1 \leq K \leq \min(N, 10)
  • 1 \leq L_i \leq R_i \leq N
  • [L_i, R_i][L_j, R_j] は共通部分を持たない (i \neq j)
  • 入力はすべて整数である

入力

入力は以下の形式で標準入力から与えられる。

N K
L_1 R_1
L_2 R_2
:
L_K R_K

出力

高橋くんがマス 1 からマス N に行く方法の個数を 998244353 で割った余りを出力せよ。


入力例 1

5 2
1 1
3 4

出力例 1

4

集合 S は 区間 [1, 1] と区間 [3, 4] の和集合であり、S = \{ 1, 3, 4 \} です。

マス 5 へ移動する方法は次の 4 通りが考えられます。

  • マス 1, 2, 3, 4, 5 の順に移動する。
  • マス 1, 2, 5 の順に移動する。
  • マス 1, 4, 5 の順に移動する。
  • マス 1, 5 の順に移動する。

入力例 2

5 2
3 3
5 5

出力例 2

0

S = \{ 3, 5 \} であり、そもそもマス 5 にたどり着けないので 0 を出力してください。


入力例 3

5 1
1 2

出力例 3

5

入力例 4

60 3
5 8
1 3
10 15

出力例 4

221823067

998244353 で割った余りを出力することに注意してください。

Score : 400 points

Problem Statement

There are N cells arranged in a row, numbered 1, 2, \ldots, N from left to right.

Tak lives in these cells and is currently on Cell 1. He is trying to reach Cell N by using the procedure described below.

You are given an integer K that is less than or equal to 10, and K non-intersecting segments [L_1, R_1], [L_2, R_2], \ldots, [L_K, R_K]. Let S be the union of these K segments. Here, the segment [l, r] denotes the set consisting of all integers i that satisfy l \leq i \leq r.

  • When you are on Cell i, pick an integer d from S and move to Cell i + d. You cannot move out of the cells.

To help Tak, find the number of ways to go to Cell N, modulo 998244353.

Constraints

  • 2 \leq N \leq 2 \times 10^5
  • 1 \leq K \leq \min(N, 10)
  • 1 \leq L_i \leq R_i \leq N
  • [L_i, R_i] and [L_j, R_j] do not intersect (i \neq j)
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

N K
L_1 R_1
L_2 R_2
:
L_K R_K

Output

Print the number of ways for Tak to go from Cell 1 to Cell N, modulo 998244353.


Sample Input 1

5 2
1 1
3 4

Sample Output 1

4

The set S is the union of the segment [1, 1] and the segment [3, 4], therefore S = \{ 1, 3, 4 \} holds.

There are 4 possible ways to get to Cell 5:

  • 1 \to 2 \to 3 \to 4 \to 5,
  • 1 \to 2 \to 5,
  • 1 \to 4 \to 5 and
  • 1 \to 5.

Sample Input 2

5 2
3 3
5 5

Sample Output 2

0

Because S = \{ 3, 5 \} holds, you cannot reach to Cell 5. Print 0.


Sample Input 3

5 1
1 2

Sample Output 3

5

Sample Input 4

60 3
5 8
1 3
10 15

Sample Output 4

221823067

Note that you have to print the answer modulo 998244353.