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

题目描述

 特别喜欢线段树,他给你一个长度为  的序列,对序列进行 次操作。

操作有两种:

 :表示将下标在  区间内的数字替换成

 :表示查询区间  的区间和

输入描述:

第一行两个整数 ,表示序列的长度和操作次数

第二行  个整数,表示序列的初始值 

接下来  行,每行三或四个数字,若第一个数字是 ,则表示操作 ,反之则表示操作

输出描述:

对于每个操作 ,输出一行一个整数表示区间和。

示例1

输入

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

输出

复制
5
15
12

说明

第一次1操作后,序列是1 2 3 4 5
第二次1操作后,序列是3 4 5 4 5