#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e5+5;
ll c[N];
int n, q, k, d;
class ST
{
private:
vector<ll> sum;
// vector<vector<ll>> sum;
public:
ST(int nn)
{
sum.assign(4*N, 0);
}
ll add(int i, int x, int l=1, int r=n, int cur=1)
{
if(i<l || r<i) return sum[cur];
if(l==r)
return sum[cur] = x;
int m=((l+r)>>1), r1=(cur<<1), r2=((cur<<1)|1);
return sum[cur] = add(i,x,l,m,r1) + add(i,x,m+1,r,r2);
// if(i < l || r < i) return;
// if(l == r)
// {
// sum[cur][0] = x;
// for(int i=1; i<d; i++) sum[cur][i] = sum[cur][i-1]/k;
// return;
// }
// add(i, x, l, m, r1);
// add(i, x, m+1, r, r2);
// for(int i=0; i<d; i++)
// sum[cur][i] = sum[r1][i] + sum[r2][i];
}
ll get_sum(int lg, int rg, int l=1, int r=n, int cur=1)
{
if(lg<=l && r<=rg) return sum[cur];
if(r<lg || rg<l) return 0;
int m=((l+r)>>1), r1=(cur<<1), r2=((cur<<1)|1);
return get_sum(lg,rg,l,m,r1)+get_sum(lg,rg,m+1,r,r2);
}
};
int main()
{
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> n >> q >> k;
ST sk(n);
for(int i=1; i<=n; i++)
{
cin >> c[i];
sk.add(i,c[i]);
}
while(q--)
{
int s, t, u; cin >> s >> t >> u;
if(s==1) sk.add(t, u);
if(s==2) continue;
if(s==3) cout << sk.get_sum(t, u) << '\n';
}
return 0;
}