要素数が N の配列 A がある。この配列に対して Q 個のクエリが与えられるので順に処理せよ。
クエリは以下の通りである。
1 x : A の全ての要素に対して x だけ加算する。
2 l r k: 閉区間 [l,r] での A の k 番目に大きい値を出力する。
制約
1≤N,Q≤105
−109≤Ai(1≤i≤N),x≤109
1≤l,r≤N
1≤k≤r−l+1
N,Q,Ai,x,l,r,k∈Z
入力
NQ A1A2...An Query1 Query2 ... QueryQ
ただし、Queryq は以下のいずれかの形式で与えられる。
1x
2lrk
出力
2番目の形式のクエリに対し、答えを出力せよ。また、クエリごとに改行せよ。
入力例 1
5 4
2 7 1 8 2
1 4
2 1 3 2
1 -7
2 3 5 1
出力例 1
6
5
Query1: A の要素全てに4を加える。A=[6,11,5,12,6] Query2: A の部分配列 A[1..3]=[6,11,5], ここで2番目に大きいのは6 Query3: A の要素全てに7を引く。A=[−1,4,−2,5,−1] Query4: A の部分配列 A[3..5]=[−2,5,−1], ここで1番目に大きいのは5