二分大法
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

题目背景

“太极生两仪,两仪生四象,四象生八卦”中华优秀文化博大精深,源远流长。小王痴迷于太极八卦传统文化,以致于日夜研究这个奥妙的哲学,功夫不负有心人,小王从两仪中领悟出了“二分大法”,运用在他的程序设计中妙不可言。


题目大意

给定一个包含n个元素的数列a_1,a_2,......a_n。小王每次选择一个数i(1<=i<n),将这个数列分成前后两块,分别是a_1,a_2,......,a_ia_{i+1},......,a_n。接下来小王对将前面一块中所有数选一个操作:

1、同时加上一个数y

2、同时乘上一个数y

最后,小王使出“乾坤大挪移”把前后两块位置交换,并将数列中所有元素对1000000007取模。

例如:

给定7个元素的数列:1,2,3,4,5,6,7

小王选择i=3,则数列分成1,2,3和4,5,6,7两块

接着小王对前面一块中所有数同时加上7,变成8,9,10

最后交换两块位置,数列变成4,5,6,7,8,9,10

至此,小王完成了一次操作

现在给定一个n个元素的数列a,和q次操作,问小王最后得到的数列是什么。


输入描述:

第一行,一个正整数n,表示数列元素个数,n<=100000

第二行,n个整数,0<=a_i<=1000000000

第三行,一个正整数q,表示小王的q次操作,q<=1000000

接下来q行,每行三个整数i,x,y

i表示分块的位置,x表示选择的操作,y表示加或乘的数

1<=i<n,x=1或x=2,0<=y<=1000000000

保证所有i累加小于1e7

输出描述:

一行n个数,表示操作后的数列的n个元素
示例1

输入

复制
7
1 2 3 4 5 6 7 
3
3 1 7
2 1 1
1 2 2

输出

复制
7 8 9 10 5 6 12