You are given circular array *a*<sub class="lower-index">0</sub>, *a*<sub class="lower-index">1</sub>, ..., *a*<sub class="lower-index">*n* - 1</sub>. There are two types of operations with it: 
 -  *inc*(*lf*, *rg*, *v*) — this operation increases each element on the segment [*lf*, *rg*] (inclusively) by *v*; -  *rmq*(*lf*, *rg*) — this operation returns minimal value on the segment [*lf*, *rg*] (inclusively). 
Assume segments to be circular, so if *n* = 5 and *lf* = 3, *rg* = 1, it means the index sequence: 3, 4, 0, 1.

Write program to process given sequence of operations.
The first line contains integer *n* (1 ≤ *n* ≤ 200000). The next line contains initial state of the array: *a*<sub class="lower-index">0</sub>, *a*<sub class="lower-index">1</sub>, ..., *a*<sub class="lower-index">*n* - 1</sub> ( - 10<sup class="upper-index">6</sup> ≤ *a*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">6</sup>), *a*<sub class="lower-index">*i*</sub> are integer. The third line contains integer *m* (0 ≤ *m* ≤ 200000), *m* — the number of operartons. Next *m* lines contain one operation each. If line contains two integer *lf*, *rg* (0 ≤ *lf*, *rg* ≤ *n* - 1) it means *rmq* operation, it contains three integers *lf*, *rg*, *v* (0 ≤ *lf*, *rg* ≤ *n* - 1; - 10<sup class="upper-index">6</sup> ≤ *v* ≤ 10<sup class="upper-index">6</sup>) — *inc* operation.
def findMin(index1, index2, l):
    if index1 < index2:
        min = l[index1]
        for i in range(index1+1, index2+1):
            if l[i] < min:
                min = l[i]
        return min
    elif index1 > index2:
        min1 = findMin(index1, len(l)-1, l)
        min2 = findMin(0, index2, l)
        if min1 < min2:
            return min1
        else: return min2
    else: return l[index1]

n = int(input())
l = list(map(int, input().split()))
m = int(input())
for i in range(m):
    s = list(map(int, input().split()))
    if len(s) == 2:
        print(findMin(s[0], s[1], l))
    elif len(s) == 3:
        val = s[2]
        if s[0] < s[1]:
            for x in range(s[0], s[1]+1):
                l[x] += val
        elif s[0] > s[1]:
            for x in range(s[0], n):
                l[x] += val
            for x in range(0, s[1]+1):
                l[x] += val
        else:
            l[s[0]] += val
