#include <stdio.h>
#define MAXN 1000010
#define LL long long
LL tree[MAXN];
// THIS SHOULD BE WRONG BUT GIVES ACCEPTED
/*LL read(int idx) {
LL sum = 0;
while (idx > 0) {
sum += tree[idx];
idx -= (idx & -idx);
}
return sum;
}*/
// ACCORDING TO ME THIS IS RIGHT BUT GIVE WRONG ANS
LL read(int idx){
LL sum = tree[idx]; // sum will be decreased
if (idx > 0){ // special case
int z = idx - (idx & -idx); // make z first
idx--; // idx is no important any more, so instead y, you can use idx
while (idx != z){ // at some iteration idx (y) will become z
sum -= tree[idx];
// substruct tree frequency which is between y and "the same path"
idx -= (idx & -idx);
}
}
return sum;
}
void update(int idx, LL val) {
while (idx <= MAXN) {
tree[idx] += val;
idx += (idx & -idx);
}
}
inline void scan(int *a) {
register char c=0;
while (c < 33)
c = getchar_unlocked();
*a = 0;
while (c > 33) {
*a = *a * 10 + c - '0';
c = getchar_unlocked();
}
}
LL in(){LL r=0,c;for(c=getchar_unlocked();c<=32;c=getchar_unlocked());if(c=='-') return -in();for(;c>32;r=(r<<1)+(r<<3)+c-'0',c=getchar_unlocked());return r;}
main()
{
int n, m;
LL c;
char ch;
scan(&n);
scan(&m);
c = in();
while (m--)
{
ch = getchar();
while (ch != 'Q' && ch != 'S' )
ch = getchar();
if (ch == 'Q' )
{
int p;
scan(&p);
printf("%lld\n", read(p) + c);
}
else
{
int u, v;
LL k;
scan(&u);
scan(&v);
k = in();
update(u, k);///update from u to MAXVAL but we want from
/// u till v ...so subtract from v+1 till MAXVAL
update(v+1, -k);
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgTUFYTiAxMDAwMDEwCiNkZWZpbmUgTEwgbG9uZyBsb25nCkxMIHRyZWVbTUFYTl07Ci8vIFRISVMgU0hPVUxEIEJFIFdST05HIEJVVCBHSVZFUyBBQ0NFUFRFRAovKkxMIHJlYWQoaW50IGlkeCkgewpMTCBzdW0gPSAwOwp3aGlsZSAoaWR4ID4gMCkgewpzdW0gKz0gdHJlZVtpZHhdOwppZHggLT0gKGlkeCAmIC1pZHgpOwp9CnJldHVybiBzdW07Cn0qLwovLyBBQ0NPUkRJTkcgVE8gTUUgVEhJUyBJUyBSSUdIVCBCVVQgR0lWRSBXUk9ORyBBTlMKTEwgcmVhZChpbnQgaWR4KXsKTEwgc3VtID0gdHJlZVtpZHhdOyAvLyBzdW0gd2lsbCBiZSBkZWNyZWFzZWQKaWYgKGlkeCA+IDApeyAvLyBzcGVjaWFsIGNhc2UKICAgIGludCB6ID0gaWR4IC0gKGlkeCAmIC1pZHgpOyAvLyBtYWtlIHogZmlyc3QKCWlkeC0tOyAvLyBpZHggaXMgbm8gaW1wb3J0YW50IGFueSBtb3JlLCBzbyBpbnN0ZWFkIHksIHlvdSBjYW4gdXNlIGlkeAoJd2hpbGUgKGlkeCAhPSB6KXsgLy8gYXQgc29tZSBpdGVyYXRpb24gaWR4ICh5KSB3aWxsIGJlY29tZSB6CgkJc3VtIC09IHRyZWVbaWR4XTsgCi8vIHN1YnN0cnVjdCB0cmVlIGZyZXF1ZW5jeSB3aGljaCBpcyBiZXR3ZWVuIHkgYW5kICJ0aGUgc2FtZSBwYXRoIgoJCWlkeCAtPSAoaWR4ICYgLWlkeCk7Cgl9Cn0KcmV0dXJuIHN1bTsKfQp2b2lkIHVwZGF0ZShpbnQgaWR4LCBMTCB2YWwpIHsKd2hpbGUgKGlkeCA8PSBNQVhOKSB7CnRyZWVbaWR4XSArPSB2YWw7CmlkeCArPSAoaWR4ICYgLWlkeCk7Cn0KfQoKaW5saW5lIHZvaWQgc2NhbihpbnQgKmEpIHsKcmVnaXN0ZXIgY2hhciBjPTA7CndoaWxlIChjIDwgMzMpCmMgPSBnZXRjaGFyX3VubG9ja2VkKCk7CiphID0gMDsKd2hpbGUgKGMgPiAzMykgewoqYSA9ICphICogMTAgKyBjIC0gJzAnOwpjID0gZ2V0Y2hhcl91bmxvY2tlZCgpOwp9Cn0KCkxMIGluKCl7TEwgcj0wLGM7Zm9yKGM9Z2V0Y2hhcl91bmxvY2tlZCgpO2M8PTMyO2M9Z2V0Y2hhcl91bmxvY2tlZCgpKTtpZihjPT0nLScpIHJldHVybiAtaW4oKTtmb3IoO2M+MzI7cj0ocjw8MSkrKHI8PDMpK2MtJzAnLGM9Z2V0Y2hhcl91bmxvY2tlZCgpKTtyZXR1cm4gcjt9CgptYWluKCkKewppbnQgbiwgbTsKTEwgYzsKY2hhciBjaDsKc2Nhbigmbik7CnNjYW4oJm0pOwpjID0gaW4oKTsKd2hpbGUgKG0tLSkKewogY2ggPSBnZXRjaGFyKCk7CiB3aGlsZSAoY2ggIT0gJ1EnICYmIGNoICE9ICdTJyApCiAgY2ggPSBnZXRjaGFyKCk7CiAgaWYgKGNoID09ICdRJyApCiAgewogIGludCBwOwogIHNjYW4oJnApOwogIHByaW50ZigiJWxsZFxuIiwgcmVhZChwKSArIGMpOwogIH0KZWxzZQogewogIGludCB1LCB2OwogIExMIGs7CiAgc2NhbigmdSk7CiAgc2Nhbigmdik7CiAgayA9IGluKCk7CiAgdXBkYXRlKHUsIGspOy8vL3VwZGF0ZSBmcm9tIHUgdG8gTUFYVkFMIGJ1dCB3ZSB3YW50IGZyb20KLy8vIHUgdGlsbCB2IC4uLnNvIHN1YnRyYWN0IGZyb20gdisxIHRpbGwgTUFYVkFMCiAgdXBkYXRlKHYrMSwgLWspOwogfQoKfQpyZXR1cm4gMDsKfQo=