#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<ll> cs;
void p(int cur)
{
if(!cs[cur]) return;
int r1=(cur<<1), r2=((cur<<1)|1);
cs[cur] = sum[r1] = sum[r2] = 0;
cs[r1] = cs[r2] = 1;
}
public:
ST(int nn)
{
sum.assign(4*N, 0);
cs.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);
p(cur);
return sum[cur] = add(i,x,l,m,r1) + add(i,x,m+1,r,r2);
}
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);
p(cur);
return get_sum(lg,rg,l,m,r1)+get_sum(lg,rg,m+1,r,r2);
}
void ch(int lg, int rg, int l=1, int r=n, int cur=1)
{
if(r<lg || rg<l) return;
if(lg<=l && r<=rg)
{
sum[cur] = 0;
cs[cur] = 1;
return;
}
p(cur);
int m=((l+r)>>1), r1=(cur<<1), r2=((cur<<1)|1);
ch(lg,rg,l,m,r1);
ch(lg,rg,m+1,r,r2);
sum[cur] = sum[r1] + sum[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 && k!=1) sk.ch(t,u);
if(s==3) cout << sk.get_sum(t, u) << '\n';
}
return 0;
}