Processing math: 100%

Time Limit : sec, Memory Limit : KB
English / Japanese  

RMQ and RAQ

Write a program which manipulates a sequence A = {a0,a1,...,an1} with the following operations:

  • add(s,t,x) : add x to as,as+1,...,at.
  • find(s,t) : report the minimum value in as,as+1,...,at.

Note that the initial values of ai(i=0,1,...,n1) are 0.

Input

n q
query1
query2
:
queryq

In the first line, n (the number of elements in A) and q (the number of queries) are given. Then, ith query queryi is given in the following format:

0 s t x

or

1 s t

The first digit represents the type of the query. '0' denotes add(s,t,x) and '1' denotes find(s,t).

Output

For each find query, print the minimum value.

Constraints

  • 1n100000
  • 1q100000
  • 0st<n
  • 1000x1000

Sample Input 1

6 7
0 1 3 1
0 2 4 -2
1 0 5
1 0 1
0 3 5 3
1 3 4
1 0 5

Sample Output 1

-2
0
1
-1

 
BESsBESsBESsBESsBESsBESsBESsBESs