#include <iostream>
#include<bits/stdc++.h>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <utility>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include<algorithm>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define IOF ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
#define ll long long
#define ld long double
#define cy cout << "YES" << '\n';
#define cn cout << "NO" << '\n';
using namespace std;
using namespace __gnu_pbds;
template<class T> using ordered_multiset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
template<typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
int dx[] = {1, 0, -1, 0, -1, -1, 1, 1};
int dy[] = {0, -1, 0, 1, -1, 1, -1, 1};
int knightX[] = {-2, -2, 2, 2, 1, 1 , -1, -1};
int knighty[] = {-1, 1, -1, 1, -2, 2, -2, 2};
char di[] = {'D', 'L', 'U', 'R'};
const int N =2e5+5;
const ll MOD = 1e9 + 7;
void FOI(){
freopen("input.txt", "r" , stdin);
freopen("output.txt", "w" , stdout);
}
//check ur idea
struct Node{
ll sum;
};
struct segtree{
int size;
vector<Node> values;
void init(int n){
size = 1;
while(size < n)size*=2;
values.resize(2 * size);
}
Node neutral_element = {0};
Node single_node(ll val){
return{ val};
}
Node merge(Node a , Node b){
return {a.sum + b.sum};
}
void build(vector<Node> & v , int x , int lx , int rx){// build in linear time
if(rx - lx == 1){
if(lx < (int)v.size()){
values[x] = v[lx];
}
return;
}
int m = (lx + rx)/2;
build(v , 2 * x + 1 , lx , m);
build(v , 2 * x + 2 , m , rx);
values[x] = merge(values[2*x+1] , values[2*x+2]);
}
void build(vector<Node> & v){
build(v , 0 , 0 , size);
}
void set(int i , ll val , int x , int lx , int rx){// log(n)
if(rx - lx == 1){
values[x] = single_node(val);
return ;
}
int m = (lx + rx)/2;
if(i < m){
set(i , val , 2*x+1 , lx , m);
}
else{
set(i , val , 2*x+2 , m , rx);
}
values[x] = merge(values[2*x+1] , values[2*x+2]);
}
void set(int i , ll val){
set(i , val , 0 , 0 , size);
}
Node query(int l , int r , int x , int lx , int rx){// log(n)
if(lx >= l && rx <= r) return values[x];
if(rx <= l || lx >= r) return neutral_element;
int m = (lx+rx)/2;
Node p1 = query(l , r , 2*x+1 , lx , m) ;
Node p2 = query(l , r , 2*x+2 , m , rx) ;
return merge(p1 , p2);
}
Node query(int l , int r){
return query(l , r , 0 , 0 , size);
}
};
void solve(){
int n , q; cin >> n >> q;
segtree st;
st.init(n);
for(int i = 0 ; i < q ; i++){
int op ; cin >> op;
if(op == 1){
int l , r ;ll v; cin >> l >> r >> v;
st.set(l , v) ;
if(r < n)
st.set(r , -v);
}
else{
int idx;
cin >> idx;
cout << st.query(0 , idx+1).sum << '\n';
}
}
}
int main() {
IOF
ll t = 1;
//cin >> t;
while (t--) {
solve() ;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPGRlcXVlPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHVub3JkZXJlZF9zZXQ+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiNkZWZpbmUgSU9GIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY2luLnRpZShudWxscHRyKSwgY291dC50aWUobnVsbHB0cik7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBjeSBjb3V0IDw8ICJZRVMiIDw8ICdcbic7CiNkZWZpbmUgY24gY291dCA8PCAiTk8iIDw8ICdcbic7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwoKdGVtcGxhdGU8Y2xhc3MgVD4gdXNpbmcgb3JkZXJlZF9tdWx0aXNldCA9IHRyZWU8VCwgbnVsbF90eXBlLCBsZXNzX2VxdWFsPFQ+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPjsKdGVtcGxhdGU8dHlwZW5hbWUgVD4KdXNpbmcgb3JkZXJlZF9zZXQgPSB0cmVlPFQsIG51bGxfdHlwZSwgbGVzczxUPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CgppbnQgZHhbXSA9IHsxLCAwLCAtMSwgMCwgLTEsIC0xLCAxLCAxfTsKaW50IGR5W10gPSB7MCwgLTEsIDAsIDEsIC0xLCAxLCAtMSwgMX07CmludCBrbmlnaHRYW10gPSB7LTIsIC0yLCAyLCAyLCAxLCAxICwgLTEsIC0xfTsKaW50IGtuaWdodHlbXSA9IHstMSwgMSwgLTEsIDEsIC0yLCAyLCAtMiwgMn07CmNoYXIgZGlbXSA9IHsnRCcsICdMJywgJ1UnLCAnUid9Owpjb25zdCBpbnQgTiA9MmU1KzU7CmNvbnN0IGxsIE1PRCA9ICAxZTkgKyA3Owp2b2lkIEZPSSgpewogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiICwgc3RkaW4pOwogICAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3IiAsIHN0ZG91dCk7Cn0KCi8vY2hlY2sgdXIgaWRlYQoKc3RydWN0IE5vZGV7CiAgICBsbCBzdW07Cn07CgpzdHJ1Y3Qgc2VndHJlZXsKICAgIGludCBzaXplOwogICAgdmVjdG9yPE5vZGU+IHZhbHVlczsKICAgIAogICAgdm9pZCBpbml0KGludCBuKXsKICAgICAgICBzaXplID0gMTsKICAgICAgICB3aGlsZShzaXplIDwgbilzaXplKj0yOwogICAgICAgIHZhbHVlcy5yZXNpemUoMiAqIHNpemUpOwogICAgfQogICAgTm9kZSBuZXV0cmFsX2VsZW1lbnQgPSB7MH07CiAgICBOb2RlIHNpbmdsZV9ub2RlKGxsIHZhbCl7CiAgICAgICAgcmV0dXJueyB2YWx9OwogICAgfQoKICAgIE5vZGUgbWVyZ2UoTm9kZSBhICwgTm9kZSBiKXsKICAgICAgICByZXR1cm4ge2Euc3VtICsgYi5zdW19OwogICAgfQogICAgdm9pZCBidWlsZCh2ZWN0b3I8Tm9kZT4gJiB2ICwgaW50IHggLCBpbnQgbHggLCBpbnQgcngpey8vIGJ1aWxkIGluIGxpbmVhciB0aW1lCiAgICAgICAgaWYocnggLSBseCA9PSAxKXsKICAgICAgICAgICAgaWYobHggPCAoaW50KXYuc2l6ZSgpKXsKICAgICAgICAgICAgICAgdmFsdWVzW3hdID0gdltseF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpbnQgbSA9IChseCArIHJ4KS8yOwogICAgICAgIGJ1aWxkKHYgLCAyICogeCArIDEgLCBseCAsIG0pOwogICAgICAgIGJ1aWxkKHYgLCAyICogeCArIDIgLCBtICwgcngpOwogICAgICAgIHZhbHVlc1t4XSA9IG1lcmdlKHZhbHVlc1syKngrMV0gLCB2YWx1ZXNbMip4KzJdKTsKICAgIH0KICAgIHZvaWQgYnVpbGQodmVjdG9yPE5vZGU+ICYgdil7CiAgICAgICAgYnVpbGQodiAsIDAgLCAwICwgc2l6ZSk7ICAgCiAgICB9CgogICAgdm9pZCBzZXQoaW50IGkgICwgbGwgdmFsICwgaW50IHggLCAgaW50IGx4ICwgaW50ICByeCl7Ly8gbG9nKG4pCiAgICAgICAgaWYocnggLSBseCA9PSAxKXsKICAgICAgICAgICAgdmFsdWVzW3hdID0gc2luZ2xlX25vZGUodmFsKTsKICAgICAgICAgICAgcmV0dXJuIDsKICAgICAgICB9CiAgICAgICAgaW50IG0gPSAobHggKyByeCkvMjsKICAgICAgICBpZihpIDwgbSl7CiAgICAgICAgICAgIHNldChpICwgdmFsICwgMip4KzEgLCAgbHggLCBtKTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgc2V0KGkgLCB2YWwgLCAyKngrMiAsIG0gLCByeCk7CiAgICAgICAgfQogICAgICAgIHZhbHVlc1t4XSA9IG1lcmdlKHZhbHVlc1syKngrMV0gLCB2YWx1ZXNbMip4KzJdKTsKICAgIH0KICAgIHZvaWQgc2V0KGludCBpICAsIGxsIHZhbCl7CiAgICAgICAgc2V0KGkgLCB2YWwgLCAwICwgMCAsIHNpemUpOwogICAgfQogICAgTm9kZSBxdWVyeShpbnQgbCAsIGludCByICwgaW50IHggLCBpbnQgbHggLCBpbnQgcngpey8vIGxvZyhuKQogICAgICAgIGlmKGx4ID49IGwgJiYgcnggPD0gcikgcmV0dXJuIHZhbHVlc1t4XTsKICAgICAgICBpZihyeCA8PSBsIHx8IGx4ID49IHIpIHJldHVybiBuZXV0cmFsX2VsZW1lbnQ7CiAgICAgICAgaW50IG0gPSAobHgrcngpLzI7CiAgICAgICAgTm9kZSBwMSA9IHF1ZXJ5KGwgLCByICwgMip4KzEgICwgbHggLCBtKSA7CiAgICAgICAgTm9kZSBwMiA9IHF1ZXJ5KGwgLCByICwgMip4KzIgLCBtICwgcngpIDsKICAgICAgICByZXR1cm4gbWVyZ2UocDEgLCBwMik7CiAgICB9CiAgICBOb2RlIHF1ZXJ5KGludCBsICwgaW50IHIpewogICAgICAgIHJldHVybiBxdWVyeShsICwgciAsIDAgLCAwICwgc2l6ZSk7CiAgICB9Cn07Cgp2b2lkIHNvbHZlKCl7CmludCBuICwgcTsgIGNpbiA+PiBuID4+IHE7CnNlZ3RyZWUgc3Q7CnN0LmluaXQobik7CmZvcihpbnQgaSA9IDAgOyBpIDwgcSA7IGkrKyl7CiAgICBpbnQgb3AgOyBjaW4gPj4gb3A7CiAgICBpZihvcCA9PSAxKXsKICAgICAgICBpbnQgbCAsIHIgO2xsIHY7IGNpbiAgPj4gbCA+PiByID4+IHY7CiAgICAgICAgc3Quc2V0KGwgLCB2KSA7CiAgICAgICAgaWYociA8IG4pCiAgICAgICAgc3Quc2V0KHIgLCAtdik7CiAgICB9CiAgICBlbHNlewogICAgICAgIGludCBpZHg7CiAgICAgICAgY2luID4+IGlkeDsKICAgICAgICBjb3V0IDw8IHN0LnF1ZXJ5KDAgLCBpZHgrMSkuc3VtIDw8ICdcbic7CiAgICB9Cn0KCn0KCgoKCgoKCmludCBtYWluKCkgewogCgogICAgSU9GCgogICAgbGwgdCA9IDE7CiAgICAvL2NpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkgewoKICAgIHNvbHZlKCkgOwoKICAgIH0KIAogICAgcmV0dXJuIDA7Cn0=