Notice
Chào mừng bạn đến với OREOJ

[HueICT 2026] Cập nhật mảng

Xem dạng PDF

Gửi bài giải


Điểm: 0,01 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, C++20, Java, Kotlin, Pascal, PyPy, Python, Scratch

Cho một mảng ~A~ gồm ~N~ phần tử ~a_1, a_2, \ldots, a_N~. Có ~Q~ truy vấn cần thực hiện, mỗi truy vấn thuộc một trong hai loại sau:

  • Truy vấn loại 1: Cú pháp ~1\ l\ x~, nhân tất cả các phần tử từ vị trí ~l~ đến ~N~ (tức là ~a_i~ với ~l \le i \le N~) với số nguyên ~x~.
  • Truy vấn loại 2: Cú pháp ~2\ p\ y~, cộng thêm số nguyên ~y~ vào phần tử ~a_p~.

Yêu cầu

Sau khi thực hiện tất cả ~Q~ truy vấn, hãy in ra giá trị của các phần tử trong mảng ~A~. Do kết quả có thể rất lớn, hãy in ra phần dư của mỗi phần tử khi chia cho ~10^9 + 7~.

Input

  • Dòng đầu tiên chứa hai số nguyên dương ~N~ và ~Q~.
  • Dòng thứ hai chứa ~N~ số nguyên ~a_1, a_2, \ldots, a_N~ là các phần tử ban đầu của mảng ~A~.
  • ~Q~ dòng tiếp theo, mỗi dòng mô tả một truy vấn có dạng ~1\ l\ x~ hoặc ~2\ p\ y~.

Output

In ra ~N~ số nguyên trên một dòng, cách nhau bởi khoảng trắng, là giá trị của các phần tử ~a_1, a_2, \ldots, a_N~ sau khi thực hiện các phép tính và chia lấy dư cho ~10^9 + 7~.

Ràng buộc

  • ~1 \le N, Q \le 10^6~
  • ~|a_i| \le 10^9~
  • ~1 \le l, p \le N~
  • ~|x|, |y| \le 10^9~

Subtasks

  • Subtask 1 (30%): ~N, Q \le 5000~
  • Subtask 2 (30%): Các truy vấn loại ~1~ luôn có ~l = 1~
  • Subtask 3 (20%): ~N, Q \le 10^5~
  • Subtask 4 (20%): Không có ràng buộc gì thêm.

Ví dụ

Input
5 4
1 2 3 4 5
2 3 10
1 2 2
2 5 -3
1 4 3
Output
1 4 26 24 21

Giải thích

Ban đầu: ~[1, 2, 3, 4, 5]~

  • Sau truy vấn ~2\ 3\ 10~: ~[1, 2, 13, 4, 5]~
  • Sau truy vấn ~1\ 2\ 2~: ~[1, 4, 26, 8, 10]~
  • Sau truy vấn ~2\ 5\ (-3)~: ~[1, 4, 26, 8, 7]~
  • Sau truy vấn ~1\ 4\ 3~: ~[1, 4, 26, 24, 21]~

```



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.