/*** author: yuji9511 ***/
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using lpair = pair<ll, ll>;
const ll MOD = 1e9+7;
const ll INF = 1e18;
#define rep(i,m,n) for(ll i=(m);i<(n);i++)
#define rrep(i,m,n) for(ll i=(m);i>=(n);i--)
#define printa(x,n) for(ll i=0;i<n;i++){cout<<(x[i])<<" \n"[i==n-1];};
void print() {}
template <class H,class... T>
void print(H&& h, T&&... t){cout<<h<<" \n"[sizeof...(t)==0];print(forward<T>(t)...);}

// struct SqrtDecomposition { // sum
// private:
//     ll N, K, sqrtN;
//     vector<ll> data, bucket;

// public:
//     SqrtDecomposition(ll n){
//         N = n;
//         sqrtN = sqrt(n);
//         K = (N + sqrtN - 1) / sqrtN;
//         data.assign(n+10, 0);
//         bucket.assign(K+10, 0);
//     }

//     void add(ll x, ll y){
//         ll k = x / sqrtN;
//         data[x] += y;
//         bucket[k] += y;
//     }

//     // [x, y)
//     ll getSum(ll x, ll y){
//         ll sum = 0;
//         rep(k,0,K){
//             ll lv = k * sqrtN, rv = (k+1) * sqrtN;
//             if(rv <= x || y <= lv) continue;
//             if(x <= lv && rv <= y){
//                 sum += bucket[k];
//             }else{
//                 for(ll i = max(x, lv); i < min(y, rv); i++){
//                     sum += data[i];
//                 }
//             }
//         }
//         return sum;
//     }
// };

// struct SqrtDecomposition { // min
// private:
//     ll N, K, sqrtN;
//     vector<ll> data, bucket;

// public:
//     SqrtDecomposition(ll n){
//         N = n;
//         sqrtN = sqrt(n);
//         K = (N + sqrtN - 1) / sqrtN;
//         data.assign(n+10, (1LL<<31)-1);
//         bucket.assign(K+10, (1LL<<31)-1);
//     }

//     void update(ll x, ll y){
//         ll k = x / sqrtN;
//         data[x] = y;
//         ll min_val = y;
//         for(ll i = k * sqrtN; i < (k+1) * sqrtN; i++){
//             min_val = min(min_val, data[i]);
//         }
//         bucket[k] = min_val;
//     }

//     // [x, y)
//     ll find(ll x, ll y){
//         ll min_val = INF;
//         rep(k,0,K){
//             ll lv = k * sqrtN, rv = (k+1) * sqrtN;
//             if(rv <= x || y <= lv) continue;
//             if(x <= lv && rv <= y){
//                 min_val = min(min_val, bucket[k]);
//             }else{
//                 for(ll i = max(x, lv); i < min(y, rv); i++){
//                     min_val = min(min_val, data[i]);
//                 }
//             }
//         }
//         return min_val;
//     }
// };

struct SqrtDecomposition { // range add
private:
    ll N, K, sqrtN;
    vector<ll> data, bucket;

public:
    SqrtDecomposition(ll n){
        N = n;
        sqrtN = sqrt(n);
        K = (N + sqrtN - 1) / sqrtN;
        data.assign(n+10, 0);
        bucket.assign(K+10, 0);
    }

    void add(ll s, ll t, ll x){
        rep(k,0,K){
            ll lv = k * sqrtN, rv = (k+1) * sqrtN;
            if(rv <= s || t <= lv) continue;
            if(s <= lv && rv <= t){
                bucket[k] += x;
            }else{
                for(ll i = max(s, lv); i < min(t, rv); i++){
                    data[i] += x;
                }
            }
        }
    }

    // [x, y)
    ll get(ll x){
        return data[x] + bucket[x / sqrtN];

        // ll min_val = INF;
        // rep(k,0,K){
        //     ll lv = k * sqrtN, rv = (k+1) * sqrtN;
        //     if(rv <= x || y <= lv) continue;
        //     if(x <= lv && rv <= y){
        //         min_val = min(min_val, bucket[k]);
        //     }else{
        //         for(ll i = max(x, lv); i < min(y, rv); i++){
        //             min_val = min(min_val, data[i]);
        //         }
        //     }
        // }
        // return min_val;
    }
};

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);
    ll N, Q;
    cin >> N >> Q;
    SqrtDecomposition sd(100010);
    while(Q--){
        ll c;
        cin >> c;
        if(c == 0){
            ll s,t,x;
            cin >> s >> t >> x;
            s--; t--;
            sd.add(s, t+1, x);
        }else{
            ll x;
            cin >> x;
            x--;
            print(sd.get(x));
        }
    }
}


Measured memory_bytes: 3636