#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n, m;
struct node {
int l, r, sum, lazy;
}tr[N<<2];
void pushup(int m) {
tr[m].sum = tr[m<<1].sum + tr[m<<1|1].sum;
}
void pushdown(int m) {
if(tr[m].lazy) {
tr[m<<1].sum += (tr[m<<1].r - tr[m<<1].l + 1) * tr[m].lazy;
tr[m<<1|1].sum += (tr[m<<1|1].r - tr[m<<1|1].l + 1) * tr[m].lazy;
tr[m<<1].lazy += tr[m].lazy;
tr[m<<1|1].lazy += tr[m].lazy;
tr[m].lazy = 0;
}
}
void build(int m, int l, int r) {
tr[m].l = l;
tr[m].r = r;
tr[m].lazy = 0;
if(l == r) {
scanf("%d", &tr[m].sum);
return ;
}
int mid = (l + r) >> 1;
build(m<<1, l, mid);
build(m<<1|1, mid + 1, r);
pushup(m);
}
void updata(int m, int l, int r, int w) {
if(tr[m].l >= l && tr[m].r <= r) {
tr[m].sum += (tr[m].r - tr[m].l + 1) * w;
tr[m].lazy += w;
return ;
}
pushdown(m);
int mid = (tr[m].l + tr[m].r) >> 1;
if(l <= mid) updata(m<<1, l, r, w);
if(r > mid) updata(m<<1|1, l, r, w);
pushup(m);
}
void update(int m, int id, int w) {
if(tr[m].l == id && tr[m].r == id) {
tr[m].sum += w;
return ;
}
pushdown(m);
int mid = (tr[m].l + tr[m].r) >> 1;
if(id <= mid) update(m<<1, id, w);
else update(m<<1|1, id, w);
pushup(m);
}
int ask(int m, int l, int r) {
if(tr[m].l >= l && tr[m].r <= r) return tr[m].sum;
pushdown(m);
int mid = (tr[m].l + tr[m].r) >> 1;
int sum = 0;
if(l <= mid) sum += ask(m<<1, l, r);
if(r > mid) sum += ask(m<<1|1, l, r);
return sum;
}
int main() {
scanf("%d %d", &n, &m);
build(1, 1, n);
while(m--) {
}
return 0;
}