#include<iostream>
#include<cstdio>
#include<climits>
#include<cmath>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
#define getcx getchar_unlocked
#ifndef ONLINE_JUDGE
#define getcx getchar
#endif
using namespace std;
#define ull unsigned long long
#define lli long long int
#define li long int
#define ii int
#define mod 1000000007
/* Created by : Rahul Johari
Thapar University */
inline int inp()
{
int n=0;
int ch=getcx();int sign=1;
while( ch < '0' || ch > '9' ){if(ch=='-')sign=-1; ch=getcx();}
while( ch >= '0' && ch <= '9' )
n = (n<<3)+(n<<1) + ch-'0', ch=getcx();
return n*sign;
}
inline long long in()
{
long long n=0;
long long ch=getcx();long long sign=1;
while( ch < '0' || ch > '9' ){if(ch=='-')sign=-1; ch=getcx();}
while( ch >= '0' && ch <= '9' )
n = (n<<3)+(n<<1) + ch-'0', ch=getcx();
return n*sign;
}
lli getMid(lli s, lli e) { return s + (e -s)/2; }
lli getSumUtil(lli *st, lli ss, lli se, lli qs, lli qe, lli index)
{
if (qs <= ss && qe >= se)
return st[index];
if (se < qs || ss > qe)
return 0;
lli mid = getMid(ss, se);
return getSumUtil(st, ss, mid, qs, qe, 2*index+1) +
getSumUtil(st, mid+1, se, qs, qe, 2*index+2);
}
void updateValueUtil(lli *st, lli ss, lli se, lli i, lli diff, lli index)
{
if (i < ss || i > se)
return;
st[index] = st[index] + diff;
if (se != ss)
{
lli mid = getMid(ss, se);
updateValueUtil(st, ss, mid, i, diff, 2*index + 1);
updateValueUtil(st, mid+1, se, i, diff, 2*index + 2);
}
}
void updateValue(lli arr[], lli *st, lli n, lli i, lli new_val)
{
if (i < 0 || i > n-1)
{
printf("Invalid Input");
return;
}
lli diff = new_val - arr[i];
arr[i] = new_val;
updateValueUtil(st, 0, n-1, i, diff, 0);
}
lli getSum(lli *st, lli n, lli qs, lli qe)
{
if (qs < 0 || qe > n-1 || qs > qe)
{
printf("Invalid Input");
return -1;
}
return getSumUtil(st, 0, n-1, qs, qe, 0);
}
lli constructSTUtil(lli arr[], lli ss, lli se, lli *st, lli si)
{
if (ss == se)
{
st[si] = arr[ss];
return arr[ss];
}
lli mid = getMid(ss, se);
st[si] = constructSTUtil(arr, ss, mid, st, si*2+1) +
constructSTUtil(arr, mid+1, se, st, si*2+2);
return st[si];
}
/* inline lli power_of_2_mod(lli n) {
lli result = 1;
if (n <= 63) {
result <<= n;
result = result % 1000000007;
}
else {
lli one = 1;
one <<= 63;
while (n > 63) {
result = ((result % 1000000007) * (one % 1000000007)) % 1000000007;
n -= 63;
}
for (lli i = 1; i <= n; ++i) {
result = (result * 2) % 1000000007;
}
}
return result;
} */
lli *constructST(lli arr[], lli n)
{
lli x = (lli)(ceil(log2(n)));
lli max_size = 2*(1<<x) - 1;
lli *st = new lli[max_size];
constructSTUtil(arr, 0, n-1, st, 0);
return st;
}
int main()
{
lli x,y,n,M,total,i,j,max,d;
char O;
bool flag;
n = in();
M = in();
lli arr[n+1];
for ( i=0;i<n;i++ )
arr[i] = in();
// Build segment tree from given array
lli *st = constructST(arr, n);
while ( M-- )
{
flag = true;
cin >> O;
if ( O == 'S' )
{
x = in();
y = in();
x -= 1;
y -= 1;
printf("%lld\n",getSum(st,n,x,y));
}
max = INT_MIN;
if ( O == 'M')
{
x = in();
y = in();
x -= 1;
y -= 1;
for ( i=x;i<=y;i++ )
{
if ( arr[i] > max )
max = arr[i];
}
printf("%lld\n", max );
}
if ( O == 'U' )
{
x = in();
d = in();
x -= 1;
updateValue(arr, st, n, x, d);
}
if ( O == 'I' )
{
x = in();
y = in();
x -= 1;
y -= 1;
for ( i=x;i<=y;i++ )
{
if ( (arr[i]<arr[i+1]) && flag )
continue;
else
{
flag = false;
break;
}
}
if ( flag == true )
printf("1\n");
else
printf("0\n");
}
if ( O == 'D' )
{
x = in();
y = in();
x -= 1;
y -= 1;
for ( i=x;i<=y;i++ )
{
if ( (arr[i]>arr[i+1]) && flag )
continue;
else
{
flag = false;
break;
}
}
if ( flag == true )
printf("1\n");
else
printf("0\n");
}
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8Y2xpbWl0cz4KI2luY2x1ZGU8Y21hdGg+CiNpbmNsdWRlPGNzdHJpbmc+CiNpbmNsdWRlPHN0ZGxpYi5oPgojaW5jbHVkZTxhbGdvcml0aG0+CiNkZWZpbmUgZ2V0Y3ggZ2V0Y2hhcl91bmxvY2tlZAojaWZuZGVmIE9OTElORV9KVURHRQogICAgI2RlZmluZSBnZXRjeCBnZXRjaGFyCiNlbmRpZgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIHVsbCB1bnNpZ25lZCBsb25nIGxvbmcKI2RlZmluZSBsbGkgbG9uZyBsb25nIGludAojZGVmaW5lIGxpIGxvbmcgaW50CiNkZWZpbmUgaWkgaW50CiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKLyogQ3JlYXRlZCBieSA6IFJhaHVsIEpvaGFyaQoJCQkJVGhhcGFyIFVuaXZlcnNpdHkgKi8KCQkJCQppbmxpbmUgaW50IGlucCgpCnsKICAgaW50IG49MDsKICAgaW50IGNoPWdldGN4KCk7aW50IHNpZ249MTsKICAgd2hpbGUoIGNoIDwgJzAnIHx8IGNoID4gJzknICl7aWYoY2g9PSctJylzaWduPS0xOyBjaD1nZXRjeCgpO30KIAogICB3aGlsZSggIGNoID49ICcwJyAmJiBjaCA8PSAnOScgKQogICAgICAgICAgIG4gPSAobjw8MykrKG48PDEpICsgY2gtJzAnLCBjaD1nZXRjeCgpOwogICByZXR1cm4gbipzaWduOwp9CmlubGluZSBsb25nIGxvbmcgaW4oKQp7CiAgIGxvbmcgbG9uZyBuPTA7CiAgIGxvbmcgbG9uZyBjaD1nZXRjeCgpO2xvbmcgbG9uZyBzaWduPTE7CiAgIHdoaWxlKCBjaCA8ICcwJyB8fCBjaCA+ICc5JyApe2lmKGNoPT0nLScpc2lnbj0tMTsgY2g9Z2V0Y3goKTt9CiAKICAgd2hpbGUoICBjaCA+PSAnMCcgJiYgY2ggPD0gJzknICkKICAgICAgICAgICBuID0gKG48PDMpKyhuPDwxKSArIGNoLScwJywgY2g9Z2V0Y3goKTsKICAgcmV0dXJuIG4qc2lnbjsKfQogCmxsaSBnZXRNaWQobGxpIHMsIGxsaSBlKSB7ICByZXR1cm4gcyArIChlIC1zKS8yOyAgfQogCmxsaSBnZXRTdW1VdGlsKGxsaSAqc3QsIGxsaSBzcywgbGxpIHNlLCBsbGkgcXMsIGxsaSBxZSwgbGxpIGluZGV4KQp7CiAgICBpZiAocXMgPD0gc3MgJiYgcWUgPj0gc2UpCiAgICAgICAgcmV0dXJuIHN0W2luZGV4XTsKIAogICAgaWYgKHNlIDwgcXMgfHwgc3MgPiBxZSkKICAgICAgICByZXR1cm4gMDsKIAogICAgbGxpIG1pZCA9IGdldE1pZChzcywgc2UpOwogICAgcmV0dXJuIGdldFN1bVV0aWwoc3QsIHNzLCBtaWQsIHFzLCBxZSwgMippbmRleCsxKSArCiAgICAgICAgICAgZ2V0U3VtVXRpbChzdCwgbWlkKzEsIHNlLCBxcywgcWUsIDIqaW5kZXgrMik7Cn0KIAp2b2lkIHVwZGF0ZVZhbHVlVXRpbChsbGkgKnN0LCBsbGkgc3MsIGxsaSBzZSwgbGxpIGksIGxsaSBkaWZmLCBsbGkgaW5kZXgpCnsKICAgIGlmIChpIDwgc3MgfHwgaSA+IHNlKQogICAgICAgIHJldHVybjsKIAogICAgc3RbaW5kZXhdID0gc3RbaW5kZXhdICsgZGlmZjsKICAgIGlmIChzZSAhPSBzcykKICAgIHsKICAgICAgICBsbGkgbWlkID0gZ2V0TWlkKHNzLCBzZSk7CiAgICAgICAgdXBkYXRlVmFsdWVVdGlsKHN0LCBzcywgbWlkLCBpLCBkaWZmLCAyKmluZGV4ICsgMSk7CiAgICAgICAgdXBkYXRlVmFsdWVVdGlsKHN0LCBtaWQrMSwgc2UsIGksIGRpZmYsIDIqaW5kZXggKyAyKTsKICAgIH0KfQogCnZvaWQgdXBkYXRlVmFsdWUobGxpIGFycltdLCBsbGkgKnN0LCBsbGkgbiwgbGxpIGksIGxsaSBuZXdfdmFsKQp7CiAgICBpZiAoaSA8IDAgfHwgaSA+IG4tMSkKICAgIHsKICAgICAgICBwcmludGYoIkludmFsaWQgSW5wdXQiKTsKICAgICAgICByZXR1cm47CiAgICB9CiAKICAgIGxsaSBkaWZmID0gbmV3X3ZhbCAtIGFycltpXTsKIAogICAgYXJyW2ldID0gbmV3X3ZhbDsKIAogICAgdXBkYXRlVmFsdWVVdGlsKHN0LCAwLCBuLTEsIGksIGRpZmYsIDApOwp9CiAKbGxpIGdldFN1bShsbGkgKnN0LCBsbGkgbiwgbGxpIHFzLCBsbGkgcWUpCnsKICAgIGlmIChxcyA8IDAgfHwgcWUgPiBuLTEgfHwgcXMgPiBxZSkKICAgIHsKICAgICAgICBwcmludGYoIkludmFsaWQgSW5wdXQiKTsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CiAKICAgIHJldHVybiBnZXRTdW1VdGlsKHN0LCAwLCBuLTEsIHFzLCBxZSwgMCk7Cn0KIApsbGkgY29uc3RydWN0U1RVdGlsKGxsaSBhcnJbXSwgbGxpIHNzLCBsbGkgc2UsIGxsaSAqc3QsIGxsaSBzaSkKewogICAgaWYgKHNzID09IHNlKQogICAgewogICAgICAgIHN0W3NpXSA9IGFycltzc107CiAgICAgICAgcmV0dXJuIGFycltzc107CiAgICB9CiAKICAgIGxsaSBtaWQgPSBnZXRNaWQoc3MsIHNlKTsKICAgIHN0W3NpXSA9ICBjb25zdHJ1Y3RTVFV0aWwoYXJyLCBzcywgbWlkLCBzdCwgc2kqMisxKSArCiAgICAgICAgICAgICAgY29uc3RydWN0U1RVdGlsKGFyciwgbWlkKzEsIHNlLCBzdCwgc2kqMisyKTsKICAgIHJldHVybiBzdFtzaV07Cn0KIAovKiBpbmxpbmUgbGxpIHBvd2VyX29mXzJfbW9kKGxsaSBuKSB7CiAgICBsbGkgcmVzdWx0ID0gMTsKICAgIGlmIChuIDw9IDYzKSB7CiAgICAgICAgcmVzdWx0IDw8PSBuOwogICAgICAgIHJlc3VsdCA9IHJlc3VsdCAlIDEwMDAwMDAwMDc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBsbGkgb25lID0gMTsKICAgICAgICBvbmUgPDw9IDYzOwogICAgICAgIHdoaWxlIChuID4gNjMpIHsKICAgICAgICAgICAgcmVzdWx0ID0gKChyZXN1bHQgJSAxMDAwMDAwMDA3KSAqIChvbmUgJSAxMDAwMDAwMDA3KSkgJSAxMDAwMDAwMDA3OwogICAgICAgICAgICBuIC09IDYzOwogICAgICAgIH0KCiAgICAgICAgZm9yIChsbGkgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAyKSAlIDEwMDAwMDAwMDc7CiAgICAgICAgfQoKICAgIH0KCiAgICByZXR1cm4gcmVzdWx0Owp9ICovCgpsbGkgKmNvbnN0cnVjdFNUKGxsaSBhcnJbXSwgbGxpIG4pCnsKICAgIGxsaSB4ID0gKGxsaSkoY2VpbChsb2cyKG4pKSk7CiAgICBsbGkgbWF4X3NpemUgPSAyKigxPDx4KSAtIDE7CiAgICBsbGkgKnN0ID0gbmV3IGxsaVttYXhfc2l6ZV07CiAKICAgIGNvbnN0cnVjdFNUVXRpbChhcnIsIDAsIG4tMSwgc3QsIDApOwogCiAgICByZXR1cm4gc3Q7Cn0KIAppbnQgbWFpbigpCnsKCiAgICBsbGkgeCx5LG4sTSx0b3RhbCxpLGosbWF4LGQ7CiAgICBjaGFyIE87CiAgICBib29sIGZsYWc7CiAgICAKICAgIG4gPSBpbigpOwogICAgTSA9IGluKCk7CiAgICAKICAgIGxsaSBhcnJbbisxXTsKICAgIGZvciAoIGk9MDtpPG47aSsrICkKICAgIGFycltpXSA9IGluKCk7CiAKICAgIC8vIEJ1aWxkIHNlZ21lbnQgdHJlZSBmcm9tIGdpdmVuIGFycmF5CiAgICBsbGkgKnN0ID0gY29uc3RydWN0U1QoYXJyLCBuKTsKICAgIHdoaWxlICggTS0tICkKICAgIHsKICAgIAlmbGFnID0gdHJ1ZTsKICAgIAkKICAgIAljaW4gPj4gTzsKICAgIAlpZiAoIE8gPT0gJ1MnICkKICAgIAl7CiAgICAJCXggPSBpbigpOwogICAgCQl5ID0gaW4oKTsKICAgIAkJeCAtPSAxOwogICAgCQl5IC09IDE7CiAgICAJCXByaW50ZigiJWxsZFxuIixnZXRTdW0oc3Qsbix4LHkpKTsKICAgIAl9CiAgICAJbWF4ID0gSU5UX01JTjsKICAgIAlpZiAoIE8gPT0gJ00nKQogICAgCXsKICAgIAkJeCA9IGluKCk7CiAgICAJCXkgPSBpbigpOwogICAgCQl4IC09IDE7CiAgICAJCXkgLT0gMTsKICAgIAkJCiAgICAJCWZvciAoIGk9eDtpPD15O2krKyApCiAgICAJCXsKICAgIAkJCWlmICggYXJyW2ldID4gbWF4ICkKICAgIAkJCW1heCA9IGFycltpXTsKICAgIAkJfQogICAgCQlwcmludGYoIiVsbGRcbiIsIG1heCApOwogICAgCX0KICAgIAkKICAgIAlpZiAoIE8gPT0gJ1UnICkKICAgIAl7CiAgICAJCXggPSBpbigpOwogICAgCQlkID0gaW4oKTsKICAgIAkJeCAtPSAxOwogICAgCQkKICAgIAkJdXBkYXRlVmFsdWUoYXJyLCBzdCwgbiwgeCwgZCk7CiAgICAJfQogICAgCQogICAgCWlmICggTyA9PSAnSScgKQogICAgCXsKICAgIAkJeCA9IGluKCk7CiAgICAJCXkgPSBpbigpOwogICAgCQl4IC09IDE7CiAgICAJCXkgLT0gMTsKICAgIAkJCiAgICAJCWZvciAoIGk9eDtpPD15O2krKyApCiAgICAJCXsKICAgIAkJCWlmICggKGFycltpXTxhcnJbaSsxXSkgJiYgZmxhZyApCiAgICAJCQljb250aW51ZTsKICAgIAkJCWVsc2UKICAgIAkJCXsKICAgIAkJCQlmbGFnID0gZmFsc2U7CiAgICAJCQkJYnJlYWs7CiAgICAJCQl9CiAgICAJCX0KICAgIAkJCiAgICAJCWlmICggZmxhZyA9PSB0cnVlICkKICAgIAkJcHJpbnRmKCIxXG4iKTsKICAgIAkJZWxzZQogICAgCQlwcmludGYoIjBcbiIpOwogICAgCX0KICAgIAkKICAgIAlpZiAoIE8gPT0gJ0QnICkKICAgIAl7CiAgICAJCXggPSBpbigpOwogICAgCQl5ID0gaW4oKTsKICAgIAkJeCAtPSAxOwogICAgCQl5IC09IDE7CiAgICAJCQogICAgCQlmb3IgKCBpPXg7aTw9eTtpKysgKQogICAgCQl7CiAgICAJCQlpZiAoIChhcnJbaV0+YXJyW2krMV0pICYmIGZsYWcgKQogICAgCQkJY29udGludWU7CiAgICAJCQllbHNlCiAgICAJCQl7CiAgICAJCQkJZmxhZyA9IGZhbHNlOwogICAgCQkJCWJyZWFrOwogICAgCQkJfQogICAgCQl9CiAgICAJCQogICAgCQlpZiAoIGZsYWcgPT0gdHJ1ZSApCiAgICAJCXByaW50ZigiMVxuIik7CiAgICAJCWVsc2UKICAgIAkJcHJpbnRmKCIwXG4iKTsKICAgIAl9CiAgICB9CiAgICByZXR1cm4gMDsKfQ==