E. Eyes Closed
time limit per test
2.5 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

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 l1, r1, l2, r2 — boundaries of two non-intersecting segments. After that he swaps one random element from the [l1, r1] segment with another random element from the [l2, r2] 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.

Input

The first line contains two integers n, q (2 ≤ n ≤ 105, 1 ≤ q ≤ 105)  — the number of elements in the array and the number of queries you need to handle.

The second line contains n integers ai (1 ≤ ai ≤ 109)  — 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, l1, r1, l2, r2 (1 ≤ l1 ≤ r1 ≤ n, 1 ≤ l2 ≤ r2 ≤ 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 [l1, r1], [l2, r2] don't have common elements.

Output

For each type 2 query print one real number — the mathematical expectation of the sum of elements in the segment.

Your answer will be considered correct if its absolute or relative error doesn't exceed 10 - 4  — formally, the answer is correct if where x is jury's answer and y is yours.

Examples
Input
4 41 1 2 21 2 2 3 32 1 21 1 2 3 42 1 2
Output
3.00000003.0000000
Input
10 51 1 1 1 1 2 2 2 2 21 1 5 6 102 1 51 1 5 6 101 1 5 6 102 6 10
Output
6.00000008.0400000
Input
10 101 2 3 4 5 6 7 8 9 101 1 5 6 101 1 5 6 102 1 51 1 3 6 92 1 31 5 7 8 101 1 1 10 102 1 52 7 102 1 10
Output
23.000000014.000000028.013333321.573333355.0000000