import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class FastReader {
public FastReader() {
}
while (st == null || !st.hasMoreElements()) {
}
return st.nextToken();
}
}
return Long.
parseLong(next
()); }
return Double.
parseDouble(next
()); }
return br.readLine();
}
}
class Main{
static class pair{
long val;
long type;
pair(long val, long type){
this.val = val;
this.type = type;
}
}
static long[][] segmentArray;
static pair[] lazyArray;
static int[] ar;
public static void build(int ind, int l, int r){
if( l == r){
segmentArray[ind][0] = (long) ar[l] * ar[l];
segmentArray[ind][1] = ar[l];
return;
}
int mid = (l+r)/2;
build(2*ind+1, l, mid);
build(2*ind+2, mid+1, r);
segmentArray[ind][0] = segmentArray[2*ind+1][0] + segmentArray[2*ind+2][0];
segmentArray[ind][1] = segmentArray[2*ind+1][1] + segmentArray[2*ind+2][1];
}
public static long find(int ind, long l, long r, int lr, int rr){
if( lazyArray[ind] != null ){
pair temp = lazyArray[ind];
if( temp.type == 1){
segmentArray[ind][0] += (r-l+1) * temp.val * temp.val + 2 * temp.val * segmentArray[ind][1];
segmentArray[ind][1] += (r - l + 1) * temp.val;
}
else{
segmentArray[ind][0] = (r-l+1) * temp.val * temp.val;
segmentArray[ind][1] = (r - l + 1) * temp.val;
}
if( l != r){
helper(2*ind+1, temp.val, temp.type);
helper(2*ind+2, temp.val, temp.type);
}
lazyArray[ind] = null;
}
if( r < lr || rr < l || l > r)
return 0;
if( l >= lr && r <= rr)
return segmentArray[ind][0];
long mid = (r+l)/2;
return find(2*ind+1, l, mid, lr, rr ) + find(2*ind+2, mid+1, r, lr, rr);
}
private static void update(int ind, long l, long r, int u, int v, int val, int type) {
if( lazyArray[ind] != null ){
pair temp = lazyArray[ind];
if( temp.type == 1){
segmentArray[ind][0] += (r - l + 1) * temp.val* temp.val + 2 * temp.val * segmentArray[ind][1];
segmentArray[ind][1] += (r - l + 1) * temp.val;
}
else{
segmentArray[ind][0] = (r - l + 1) * temp.val* temp.val;
segmentArray[ind][1] = (r - l + 1) * temp.val;
}
if( l != r){
helper(2*ind+1, temp.val, temp.type);
helper(2*ind+2, temp.val, temp.type);
}
lazyArray[ind] = null;
}
if( l >= u && r <= v){
if( type == 1){
segmentArray[ind][0] += (r - l + 1) * val * val + 2 * val * segmentArray[ind][1];
segmentArray[ind][1] += (r - l + 1) * val;
}
else{
segmentArray[ind][0] = (r - l + 1) * val * val;
segmentArray[ind][1] = (r - l + 1) * val;
}
if( l != r){
helper(2*ind+1, val, type);
helper(2*ind+2, val, type);
}
return;
}
if( r < u || v < l || l > r)
return;
long mid = (r+l)/2;
update(2*ind+1, l, mid, u, v, val, type);
update(2*ind+2, mid+1, r, u, v, val, type);
segmentArray[ind][0] = segmentArray[2*ind+1][0] + segmentArray[2*ind+2][0];
segmentArray[ind][1] = segmentArray[2*ind+1][1] + segmentArray[2*ind+2][1];
}
public static void helper(int i, long pre_val, long pre_type) {
if( lazyArray[i] == null){
lazyArray[i] = new pair(pre_val, pre_type);
}
else {
pair next = lazyArray[i];
if (pre_type == 1 && (next.type == 1 || next.type == 0)) {
next.val = pre_val + next.val;
} else {
next.type = 0;
next.val = pre_val;
}
}
}
FastReader ff = new FastReader();
int t = ff.nextInt();
for(int x =1; x <= t; x++) {
System.
out.
println("Case " +x
+ ":"); int n = ff.nextInt();
int q = ff.nextInt();
segmentArray = new long[4 * n + 5][2];
lazyArray = new pair[4 * n + 5];
ar = new int[n];
for(int i =0; i < n; i++){
ar[i] = ff.nextInt();
}
build(0, 0, n - 1);
while(q-- > 0) {
int op = ff.nextInt();
int u = ff.nextInt()-1;
int v = ff.nextInt()-1;
if (op == 2) {
System.
out.
println((int) find
(0,
0, n
- 1, u, v
)); }
else {
int val = ff.nextInt();
update(0, 0, n - 1, u, v, val, op);
}
}
}
}
}
aW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwppbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKaW1wb3J0IGphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXI7CgpjbGFzcyBGYXN0UmVhZGVyIHsKICAgIEJ1ZmZlcmVkUmVhZGVyIGJyOwogICAgU3RyaW5nVG9rZW5pemVyIHN0OwoKICAgIHB1YmxpYyBGYXN0UmVhZGVyKCkgewogICAgICAgIGJyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKTsKICAgIH0KCiAgICBTdHJpbmcgbmV4dCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgd2hpbGUgKHN0ID09IG51bGwgfHwgIXN0Lmhhc01vcmVFbGVtZW50cygpKSB7CiAgICAgICAgICAgIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihici5yZWFkTGluZSgpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHN0Lm5leHRUb2tlbigpOwogICAgfQoKICAgIGludCBuZXh0SW50KCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICByZXR1cm4gSW50ZWdlci5wYXJzZUludChuZXh0KCkpOwogICAgfQoKICAgIGxvbmcgbmV4dExvbmcoKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgIHJldHVybiBMb25nLnBhcnNlTG9uZyhuZXh0KCkpOwogICAgfQoKICAgIGRvdWJsZSBuZXh0RG91YmxlKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICByZXR1cm4gRG91YmxlLnBhcnNlRG91YmxlKG5leHQoKSk7CiAgICB9CgogICAgU3RyaW5nIG5leHRMaW5lKCkgdGhyb3dzIElPRXhjZXB0aW9uewogICAgICAgIHJldHVybiBici5yZWFkTGluZSgpOwogICAgfQp9CgpjbGFzcyBNYWluewoKICAgIHN0YXRpYyBjbGFzcyBwYWlyewogICAgICAgIGxvbmcgdmFsOwogICAgICAgIGxvbmcgdHlwZTsKICAgICAgICBwYWlyKGxvbmcgdmFsLCBsb25nIHR5cGUpewogICAgICAgICAgICB0aGlzLnZhbCA9IHZhbDsKICAgICAgICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgICB9CiAgICB9CiAgICBzdGF0aWMgbG9uZ1tdW10gc2VnbWVudEFycmF5OwogICAgc3RhdGljIHBhaXJbXSBsYXp5QXJyYXk7CiAgICBzdGF0aWMgaW50W10gYXI7CgogICAgcHVibGljIHN0YXRpYyB2b2lkIGJ1aWxkKGludCBpbmQsIGludCBsLCBpbnQgcil7CiAgICAgICAgaWYoIGwgPT0gcil7CiAgICAgICAgICAgIHNlZ21lbnRBcnJheVtpbmRdWzBdID0gKGxvbmcpIGFyW2xdICogYXJbbF07CiAgICAgICAgICAgIHNlZ21lbnRBcnJheVtpbmRdWzFdID0gYXJbbF07CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaW50IG1pZCA9IChsK3IpLzI7CiAgICAgICAgYnVpbGQoMippbmQrMSwgbCwgbWlkKTsKICAgICAgICBidWlsZCgyKmluZCsyLCBtaWQrMSwgcik7CgogICAgICAgIHNlZ21lbnRBcnJheVtpbmRdWzBdID0gc2VnbWVudEFycmF5WzIqaW5kKzFdWzBdICsgc2VnbWVudEFycmF5WzIqaW5kKzJdWzBdOwogICAgICAgIHNlZ21lbnRBcnJheVtpbmRdWzFdID0gc2VnbWVudEFycmF5WzIqaW5kKzFdWzFdICsgc2VnbWVudEFycmF5WzIqaW5kKzJdWzFdOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgbG9uZyBmaW5kKGludCBpbmQsIGxvbmcgbCwgbG9uZyByLCBpbnQgbHIsIGludCBycil7CgogICAgICAgIGlmKCBsYXp5QXJyYXlbaW5kXSAhPSBudWxsICl7CiAgICAgICAgICAgIHBhaXIgdGVtcCA9IGxhenlBcnJheVtpbmRdOwogICAgICAgICAgICBpZiggdGVtcC50eXBlID09IDEpewogICAgICAgICAgICAgICAgc2VnbWVudEFycmF5W2luZF1bMF0gKz0gKHItbCsxKSAqIHRlbXAudmFsICogdGVtcC52YWwgKyAyICogdGVtcC52YWwgKiBzZWdtZW50QXJyYXlbaW5kXVsxXTsKICAgICAgICAgICAgICAgIHNlZ21lbnRBcnJheVtpbmRdWzFdICs9IChyIC0gbCArIDEpICogdGVtcC52YWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgIHNlZ21lbnRBcnJheVtpbmRdWzBdID0gKHItbCsxKSAqIHRlbXAudmFsICogdGVtcC52YWw7CiAgICAgICAgICAgICAgICBzZWdtZW50QXJyYXlbaW5kXVsxXSA9IChyIC0gbCArIDEpICogdGVtcC52YWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoIGwgIT0gcil7CiAgICAgICAgICAgICAgICBoZWxwZXIoMippbmQrMSwgdGVtcC52YWwsIHRlbXAudHlwZSk7CiAgICAgICAgICAgICAgICBoZWxwZXIoMippbmQrMiwgdGVtcC52YWwsIHRlbXAudHlwZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGF6eUFycmF5W2luZF0gPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYoIHIgPCBsciB8fCByciA8IGwgfHwgbCA+IHIpCiAgICAgICAgICAgIHJldHVybiAwOwoKICAgICAgICBpZiggbCA+PSBsciAmJiByIDw9IHJyKQogICAgICAgICAgICByZXR1cm4gc2VnbWVudEFycmF5W2luZF1bMF07CgogICAgICAgIGxvbmcgbWlkID0gKHIrbCkvMjsKICAgICAgICByZXR1cm4gZmluZCgyKmluZCsxLCBsLCBtaWQsIGxyLCByciApICsgZmluZCgyKmluZCsyLCBtaWQrMSwgciwgbHIsIHJyKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHVwZGF0ZShpbnQgaW5kLCBsb25nIGwsIGxvbmcgciwgaW50IHUsIGludCB2LCBpbnQgdmFsLCBpbnQgdHlwZSkgewoKICAgICAgICBpZiggbGF6eUFycmF5W2luZF0gIT0gbnVsbCApewogICAgICAgICAgICBwYWlyIHRlbXAgPSBsYXp5QXJyYXlbaW5kXTsKICAgICAgICAgICAgaWYoIHRlbXAudHlwZSA9PSAxKXsKICAgICAgICAgICAgICAgIHNlZ21lbnRBcnJheVtpbmRdWzBdICs9IChyIC0gbCArIDEpICogdGVtcC52YWwqIHRlbXAudmFsICsgMiAqIHRlbXAudmFsICogc2VnbWVudEFycmF5W2luZF1bMV07CiAgICAgICAgICAgICAgICBzZWdtZW50QXJyYXlbaW5kXVsxXSArPSAociAtIGwgKyAxKSAqIHRlbXAudmFsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICBzZWdtZW50QXJyYXlbaW5kXVswXSA9IChyIC0gbCArIDEpICogdGVtcC52YWwqIHRlbXAudmFsOwogICAgICAgICAgICAgICAgc2VnbWVudEFycmF5W2luZF1bMV0gPSAociAtIGwgKyAxKSAqIHRlbXAudmFsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCBsICE9IHIpewogICAgICAgICAgICAgICAgaGVscGVyKDIqaW5kKzEsIHRlbXAudmFsLCB0ZW1wLnR5cGUpOwogICAgICAgICAgICAgICAgaGVscGVyKDIqaW5kKzIsIHRlbXAudmFsLCB0ZW1wLnR5cGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhenlBcnJheVtpbmRdID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmKCBsID49IHUgJiYgciA8PSB2KXsKICAgICAgICAgICAgaWYoIHR5cGUgPT0gMSl7CiAgICAgICAgICAgICAgICBzZWdtZW50QXJyYXlbaW5kXVswXSArPSAociAtIGwgKyAxKSAqIHZhbCAqIHZhbCArIDIgKiB2YWwgKiBzZWdtZW50QXJyYXlbaW5kXVsxXTsKICAgICAgICAgICAgICAgIHNlZ21lbnRBcnJheVtpbmRdWzFdICs9IChyIC0gbCArIDEpICogdmFsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICBzZWdtZW50QXJyYXlbaW5kXVswXSA9IChyIC0gbCArIDEpICogdmFsICogdmFsOwogICAgICAgICAgICAgICAgc2VnbWVudEFycmF5W2luZF1bMV0gPSAociAtIGwgKyAxKSAqIHZhbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiggbCAhPSByKXsKICAgICAgICAgICAgICAgIGhlbHBlcigyKmluZCsxLCB2YWwsIHR5cGUpOwogICAgICAgICAgICAgICAgaGVscGVyKDIqaW5kKzIsIHZhbCwgdHlwZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYoIHIgPCB1IHx8IHYgPCBsIHx8IGwgPiByKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGxvbmcgbWlkID0gKHIrbCkvMjsKICAgICAgICB1cGRhdGUoMippbmQrMSwgbCwgbWlkLCB1LCB2LCB2YWwsIHR5cGUpOwogICAgICAgIHVwZGF0ZSgyKmluZCsyLCBtaWQrMSwgciwgdSwgdiwgdmFsLCB0eXBlKTsKCiAgICAgICAgc2VnbWVudEFycmF5W2luZF1bMF0gPSBzZWdtZW50QXJyYXlbMippbmQrMV1bMF0gKyBzZWdtZW50QXJyYXlbMippbmQrMl1bMF07CiAgICAgICAgc2VnbWVudEFycmF5W2luZF1bMV0gPSBzZWdtZW50QXJyYXlbMippbmQrMV1bMV0gKyBzZWdtZW50QXJyYXlbMippbmQrMl1bMV07CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIGhlbHBlcihpbnQgaSwgbG9uZyBwcmVfdmFsLCBsb25nIHByZV90eXBlKSB7CiAgICAgICAgaWYoIGxhenlBcnJheVtpXSA9PSBudWxsKXsKICAgICAgICAgICAgbGF6eUFycmF5W2ldID0gbmV3IHBhaXIocHJlX3ZhbCwgcHJlX3R5cGUpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcGFpciBuZXh0ID0gbGF6eUFycmF5W2ldOwogICAgICAgICAgICBpZiAocHJlX3R5cGUgPT0gMSAmJiAobmV4dC50eXBlID09IDEgfHwgbmV4dC50eXBlID09IDApKSB7CiAgICAgICAgICAgICAgICBuZXh0LnZhbCA9IHByZV92YWwgKyBuZXh0LnZhbDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG5leHQudHlwZSA9IDA7CiAgICAgICAgICAgICAgICBuZXh0LnZhbCA9IHByZV92YWw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICBGYXN0UmVhZGVyIGZmID0gbmV3IEZhc3RSZWFkZXIoKTsKICAgICAgICBpbnQgdCA9IGZmLm5leHRJbnQoKTsKICAgICAgICBmb3IoaW50IHggPTE7IHggPD0gdDsgeCsrKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2FzZSAiICt4ICsgIjoiKTsKICAgICAgICAgICAgaW50IG4gPSBmZi5uZXh0SW50KCk7CiAgICAgICAgICAgIGludCBxID0gZmYubmV4dEludCgpOwogICAgICAgICAgICBzZWdtZW50QXJyYXkgPSBuZXcgbG9uZ1s0ICogbiArIDVdWzJdOwogICAgICAgICAgICBsYXp5QXJyYXkgPSBuZXcgcGFpcls0ICogbiArIDVdOwogICAgICAgICAgICBhciA9IG5ldyBpbnRbbl07CgogICAgICAgICAgICBmb3IoaW50IGkgPTA7IGkgPCBuOyBpKyspewogICAgICAgICAgICAgICAgYXJbaV0gPSBmZi5uZXh0SW50KCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJ1aWxkKDAsIDAsIG4gLSAxKTsKICAgICAgICAgICAgd2hpbGUocS0tID4gMCkgewogICAgICAgICAgICAgICAgaW50IG9wID0gZmYubmV4dEludCgpOwogICAgICAgICAgICAgICAgaW50IHUgPSBmZi5uZXh0SW50KCktMTsKICAgICAgICAgICAgICAgIGludCB2ID0gZmYubmV4dEludCgpLTE7CiAgICAgICAgICAgICAgICBpZiAob3AgPT0gMikgewogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigoaW50KSBmaW5kKDAsIDAsIG4gLSAxLCB1LCB2KSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpbnQgdmFsID0gZmYubmV4dEludCgpOwogICAgICAgICAgICAgICAgICAgIHVwZGF0ZSgwLCAwLCBuIC0gMSwgdSwgdiwgdmFsLCBvcCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0=