序列求和
题号:NC236242
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

你有一个长度为n的数组a,你需要维护以下两种操作:

  •   ,表示把  都开根号(向下取整)

  •   ,表示询问  的值。

输入格式

输入描述:

第一行输入两个整数  ,表示数组a的长度和操作个数。

第二行输入 n 个整数  ,表示数组a的初始值。

接下来 Q 行,每行表示一个操作,格式已由题目给出。

输出描述:

对于每一个操作2,你需要输出一行一个整数,表示询问区间的和。
示例1

输入

复制
5 4
1 2 3 4 5
2 3 4
1 3 5
2 3 4
2 1 5

输出

复制
7
3
8