You have an array of ~N~ ~(1 \le N \le 100\,000)~ elements, indexed from ~1~ to ~N~. There are ~Q~ ~(1 \le Q \le 100\,000)~ operations you need to perform on it.
Each operation is one of the following:
1 l r vIncrement each value in the range ~[l,r]~ by ~v~.
2 l r vMake each value in the range ~[l,r]~ equal to ~v~ (i.e. for each element ~a_i~, such that ~l \le i \le r~, set ~a_i:=v~).
3 l rOutput the minimum value in the range ~[l,r]~.
2, ~v~ is guaranteed to be an integer in the range ~[1,100\,000]~. Every value in the starting array is also guaranteed to be in this range.
The first line has ~N~ and ~Q~.
The second line has ~N~ integers, the original array.
The next ~Q~ lines each contain an operation in the format described above.
For each operation of type
3, output the answer on its own line.
5 3 1 2 3 4 5 3 2 4 2 2 4 10 3 2 5