Vasya and Petya were tired of studying so they decided to play a game. Before the game begins Vasya looks at array *a* consisting of *n* integers. As soon as he remembers all elements of *a* the game begins. Vasya closes his eyes and Petya does *q* actions of one of two types:

1) Petya says 4 integers *l*1, *r*1, *l*2, *r*2 — boundaries of two non-intersecting segments. After that he swaps one random element from the [*l*1, *r*1] segment with another random element from the [*l*2, *r*2] segment.

2) Petya asks Vasya the sum of the elements of *a* in the [*l*, *r*] segment.

Vasya is a mathematician so he answers Petya the mathematical expectation of the sum of the elements in the segment.

Your task is to write a program which will answer the second type questions as Vasya would do it. In other words your program should print the mathematical expectation of the sum of the elements of *a* in the [*l*, *r*] segment for every second type query.
The first line contains two integers *n*, *q* (2 ≤ *n* ≤ 10<sup class="upper-index">5</sup>, 1 ≤ *q* ≤ 10<sup class="upper-index">5</sup>)  — the number of elements in the array and the number of queries you need to handle.

The second line contains *n* integers *a*<sub class="lower-index">*i*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">9</sup>)  — elements of the array.

The next *q* lines contain Petya's actions of type 1 or 2.

If it is a type 1 action then the line contains 5 integers 1, *l*1, *r*1, *l*2, *r*2 (1 ≤ *l*1 ≤ *r*1 ≤ *n*, 1 ≤ *l*2 ≤ *r*2 ≤ *n*).

If it is a type 2 query then the line contains 3 integers 2, *l*, *r* (1 ≤ *l* ≤ *r* ≤ *n*).

It is guaranteed that there is at least one type 2 query and segments [*l*1, *r*1], [*l*2, *r*2] don't have common elements.
none
R=lambda:map(int,input().split())

n, q = R()

a = list(R())
def ex(l1, r1):
    return sum(a[l1-1:r1])/(r1 - l1 +1)

for i in range(q):
    inp = list(R())
    if(inp[0] == 1):
        l1, r1, l2, r2 = inp[1], inp[2], inp[3], inp[4]
        m = r1 - l1 + 1
        n = r2 - l2 + 1
        ex_1 = ex(l1, r1)
        ex_2 = ex(l2, r2)
        for i in range(l1-1, r1):
            a[i] = (ex_2 + (m-1) *a[i])/m
        for i in range(l2 -1, r2):
            a[i] = (ex_1 + (n-1)*a[i])/n
    if(inp[0] == 2):
        l, r= inp[1], inp[2]
        print(sum(a[l-1:r]))

        