Di chuyển trên ô

View as PDF

Time limit: 1.0s , Memory limit: 256M , Points: 1

Cho n ô hàng ngang được đánh số từ 1 đến n. Cho k đoạn số nguyên, đoạn thứ i có dạng [l_i,r_i], không có hai đoạn nào giao nhau. Đang ở vị trí ô thứ c, bạn có thể thực hiện thao tác di chuyển như sau:

  • Chọn một số nguyên x sao cho tồn tại một chỉ số i thỏa mãn l_i \le x \le r_i, di chuyển đến ô c+x.

Bạn hãy đếm số cách di chuyển từ ô thứ 1 đến ô thứ n.

Hai đoạn [a,b][c,d] được gọi là giao nhau khi và chỉ khi tồn tại một số nguyên z thỏa mãn a \le z \le bc \le z \le d.

Input

  • Dòng đầu tiên chứa hai số nguyên nk (2 \le n \le 2 \times 10^5 ; 1 \le k \le min(n,10)).
  • k dòng tiếp theo, dòng thứ i chứa hai số nguyên l_ir_i mô tả đoạn [l_i,r_i] (1 \le l_i \le r_i \le n).
  • Dữ liệu đảm bảo không có hai đoạn nào giao nhau.

Output

  • In ra số cách di chuyển từ từ ô thứ 1 đến ô thứ n, kết quả chia lấy dư cho 998244353.

Examples

Sample Input 1
6 2
3 4
1 1
Sample Output 1
6
Sample Input 2
3 1
2 2
Sample Output 2
1

Notes

Trong ví dụ đầu tiên, có tổng cộng 6 cách di chuyển như sau:

  • \(1→2→3→4→5→6\)
  • \(1→2→3→6\)
  • \(1→2→5→6\)
  • \(1→2→6\)
  • \(1→4→5→6\)
  • \(1→5→6\)

Comments