Range Harvest Query

Xem dạng PDF

Chi tiết
Dạng bài
Ngôn ngữ cho phép
Assembly, AWK, C, C++, C++20, C++23, Go, Java, Kotlin, Pascal, Perl, PyPy, Python, Rust, Scratch, SED, Text
Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Có ~N~ cây được đánh số từ ~1~ đến ~N~. Ban đầu, vào ngày ~0~, tất cả các cây đều không có quả.

Từ ngày ~1~ trở đi, vào mỗi buổi sáng, cây thứ ~i~ mọc thêm đúng ~i~ quả.

Có ~Q~ lần thu hoạch. Lần thu hoạch thứ ~i~ được thực hiện vào buổi tối ngày ~D_i~. Khi đó, toàn bộ số quả đang có trên các cây từ ~L_i~ đến ~R_i~ đều được thu hoạch. Sau lần thu hoạch, các cây trong đoạn này trở về ~0~ quả.

Với mỗi lần thu hoạch, hãy tính số quả thu được modulo ~998244353~.

Ràng buộc

  • ~1 \le N \le 10^{18}~
  • ~1 \le Q \le 2 \times 10^5~
  • ~1 \le D_1 < D_2 < \dots < D_Q \le 10^{18}~
  • ~1 \le L_i \le R_i \le N~
  • Mọi giá trị trong input đều là số nguyên.

Input

Dòng đầu gồm hai số nguyên ~N, Q~.

~Q~ dòng tiếp theo, dòng thứ ~i~ gồm ba số nguyên:

~D_i\ L_i\ R_i~

mô tả lần thu hoạch thứ ~i~.

Output

In ra ~Q~ dòng.

Dòng thứ ~i~ chứa số quả thu được trong lần thu hoạch thứ ~i~, lấy modulo ~998244353~.

Ví dụ 1

Input

5 3
2 2 3
3 3 4
5 1 5

Output

10
15
50

Ví dụ 2

Input

711741968710511029 1
82803157126515475 516874290286751784 588060532191410838

Output

603657470

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.