Yuuka 对 $n$ 个相互独立的事件感兴趣。第 $i$ 个事件发生的概率为 $p_i$。Yuuka 将执行 $m$ 次操作,每次操作为以下两种之一:
- “0 $l_i$ $r_i$”:仅考虑从 $l_i$ 到 $r_i$(包含两端)的事件,求这些事件均不发生的概率。由于该值可能非常小,你需要输出该概率的自然对数:如果概率为 $p$,则输出 $\ln(p)$。
- “1 $l_i$ $r_i$ $k_i$”:对于所有 $l_i \le j \le r_i$,将 $p_j$ 乘以 $k_i$。所有事件保持相互独立。
输入格式
输入包含零个或多个测试用例,并以文件结束符(EOF)终止。对于每个测试用例:
第一行包含两个整数 $n$ 和 $m$:事件的数量和操作的数量($1 \le n, m \le 10^5$)。
第二行包含 $n$ 个实数 $p_1, p_2, \dots, p_n$,其中 $p_i$ 是第 $i$ 个事件发生的概率($10^{-5} \le p_i \le 0.1$)。
接下来的 $m$ 行提供了操作的描述。第 $i$ 行以一个整数 $t_i$ 开头:表示对应操作的类型。如果 $t_i$ 为 “0”,则后面跟着两个整数 $l_i$ 和 $r_i$。如果 $t_i$ 为 “1”,则后面跟着两个整数 $l_i$ 和 $r_i$ 以及一个实数 $k_i$($1 \le l_i \le r_i \le n$,$0.0001 \le k_i \le 100$)。
输入中的每个实数小数点后恰好有五位数字。此外,保证在任何时刻,每个 $p_i$ 都位于区间 $[10^{-5}, 0.1]$ 内。
保证所有测试用例的 $n$ 之和与 $m$ 之和均不超过 $10^5$。
输出格式
对于每个类型为 “0” 的操作,输出一个实数表示答案。如果你的答案的相对误差不超过 $10^{-9}$,则被视为正确。
样例
输入 1
6 5 0.01000 0.09871 0.00005 0.00999 0.01234 0.02345 0 1 6 1 3 4 10.00000 0 1 6 1 1 2 0.05000 0 1 6
输出 1
-0.16021487727848477000 -0.25587417689480757000 -0.14734347732072095000