#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <set>
#include <vector>
#include <bits/stdc++.h>
#include <numeric>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
template <class T>
using orderStaticTree =
tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
//
#include <bits/stdc++.h>
using namespace std;
// Import indexed sets
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
template <class T>
using Tree =
tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define ll long long
#define saleh \
ios_base::sync_with_stdio(false); \
cin.tie(nullptr);
const int MX = 4e5 + 5;
ll BIT[MX];
void ad(int x, int val)
{
for (; x < 10; x += (x & (-x))){
cout<<x<<endl;
BIT[x] += val;
}
}
ll query(int x)
{
ll ret = 0;
for (; x; x -= (x & (-x))){
// cout<<"x "<<x<<endl;
ret += BIT[x];
}
return ret;
}
int main()
{
// using BIT , range update , point query
int n, q;
cin >> n >> q;
for (int i = 0; i < n; i++)
{
int x;
cin >> x;
cout<<" x " <<x<<endl;
ad(i + 1, x);
cout<<"________________"<<endl;
ad(i + 2, -x);
cout<<"________________2"<<endl;
}
for(int i =1;i<=n;i++)cout<<BIT[i]<<" ";
cout<<endl;
while (q--)
{
int op;
cin >> op;
if (op == 1)
{
int l, r, u;
cin >> l >> r >> u;
// ad(l, u);
// ad(r + 1, -u);
}
else
{
int ind;
cin >> ind;
// cout<<" ans ";
cout << query(ind) << endl;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZSA8bnVtZXJpYz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKdGVtcGxhdGUgPGNsYXNzIFQ+CnVzaW5nIG9yZGVyU3RhdGljVHJlZSA9CiAgICB0cmVlPFQsIG51bGxfdHlwZSwgbGVzczxUPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CgovLwojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEltcG9ydCBpbmRleGVkIHNldHMKI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKdGVtcGxhdGUgPGNsYXNzIFQ+CnVzaW5nIFRyZWUgPQogICAgdHJlZTxULCBudWxsX3R5cGUsIGxlc3M8VD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+OwoKI2RlZmluZSBsbCBsb25nIGxvbmcKCiNkZWZpbmUgc2FsZWggICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IFwKICAgIGNpbi50aWUobnVsbHB0cik7Cgpjb25zdCBpbnQgTVggPSA0ZTUgKyA1OwpsbCBCSVRbTVhdOwoKdm9pZCBhZChpbnQgeCwgaW50IHZhbCkKewogICAgZm9yICg7IHggPCAxMDsgeCArPSAoeCAmICgteCkpKXsKICAgICAgICBjb3V0PDx4PDxlbmRsOwogICAgICAgIEJJVFt4XSArPSB2YWw7CiAgICB9CiAgICAgICAgCn0KCmxsIHF1ZXJ5KGludCB4KQp7CiAgICBsbCByZXQgPSAwOwogICAgZm9yICg7IHg7IHggLT0gKHggJiAoLXgpKSl7CiAgICAgICAgLy8gY291dDw8InggIjw8eDw8ZW5kbDsKICAgICAgICByZXQgKz0gQklUW3hdOwogICAgfQogICAgICAgIAoKICAgIHJldHVybiByZXQ7Cn0KCmludCBtYWluKCkKewogICAgLy8gdXNpbmcgQklUICwgcmFuZ2UgdXBkYXRlICwgcG9pbnQgcXVlcnkKICAgIGludCBuLCBxOwogICAgY2luID4+IG4gPj4gcTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICBpbnQgeDsKICAgICAgICBjaW4gPj4geDsKICAgICAgICBjb3V0PDwiIHggIiA8PHg8PGVuZGw7CiAgICAgICAgYWQoaSArIDEsIHgpOwogICAgICAgIAogICAgICAgIGNvdXQ8PCJfX19fX19fX19fX19fX19fIjw8ZW5kbDsKICAgICAgICBhZChpICsgMiwgLXgpOwogICAgICAgIGNvdXQ8PCJfX19fX19fX19fX19fX19fMiI8PGVuZGw7CiAgICB9CiAgICBmb3IoaW50IGkgPTE7aTw9bjtpKyspY291dDw8QklUW2ldPDwiICI7CiAgICBjb3V0PDxlbmRsOwogICAgd2hpbGUgKHEtLSkKICAgIHsKICAgICAgICBpbnQgb3A7CiAgICAgICAgY2luID4+IG9wOwogICAgICAgIGlmIChvcCA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGwsIHIsIHU7CiAgICAgICAgICAgIGNpbiA+PiBsID4+IHIgPj4gdTsKICAgICAgICAgICAgLy8gYWQobCwgdSk7CiAgICAgICAgICAgIC8vIGFkKHIgKyAxLCAtdSk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGludCBpbmQ7CiAgICAgICAgICAgIGNpbiA+PiBpbmQ7CiAgICAgICAgICAgIC8vIGNvdXQ8PCIgYW5zICI7CiAgICAgICAgICAgIGNvdXQgPDwgcXVlcnkoaW5kKSA8PCBlbmRsOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQo=