#include< bits/ stdc++ .h >
using namespace std;
class ST {
vector< int> seg, lazy;
public :
ST( int n) {
seg.resize ( 4 * n) ;
lazy.resize ( 4 * n) ;
}
public :
void build( int ind, int low, int high, int arr[ ] ) {
if ( low == high) {
seg[ ind] = arr[ low] ;
return ;
}
int mid = ( low + high) >> 1 ;
build( 2 * ind+ 1 , low, mid, arr) ;
build( 2 * ind+ 2 , mid+ 1 , high, arr) ;
seg[ ind] = seg[ 2 * ind+ 1 ] + seg[ 2 * ind+ 2 ] ;
}
public :
void update( int ind, int low, int high, int l, int r,
int val) {
// update the previous remaining updates
// and propogate downwards
if ( lazy[ ind] != 0 ) {
seg[ ind] += ( high - low + 1 ) * lazy[ ind] ;
// propogate the lazy update downwards
// for the remaining nodes to get updated
if ( low != high) {
lazy[ 2 * ind+ 1 ] += lazy[ ind] ;
lazy[ 2 * ind+ 2 ] += lazy[ ind] ;
}
lazy[ ind] = 0 ;
}
// no overlap
// we don't do anything and return
// low high l r or l r low high
if ( high < l or r < low) {
return ;
}
// complete overlap
// l low high r
if ( low>= l && high <= r) {
seg[ ind] += ( high - low + 1 ) * val;
// if a leaf node, it will have childrens
if ( low != high) {
lazy[ 2 * ind+ 1 ] += val;
lazy[ 2 * ind+ 2 ] += val;
}
return ;
}
// last case has to be no overlap case
int mid = ( low + high) >> 1 ;
update( 2 * ind+ 1 , low, mid, l, r, val) ;
update( 2 * ind+ 2 , mid+ 1 , high, l, r, val) ;
seg[ ind] = seg[ 2 * ind+ 1 ] + seg[ 2 * ind+ 2 ] ;
}
public :
int query( int ind, int low, int high, int l, int r) {
// update if any updates are remaining
// as the node will stay fresh and updated
if ( lazy[ ind] != 0 ) {
seg[ ind] += ( high - low + 1 ) * lazy[ ind] ;
// propogate the lazy update downwards
// for the remaining nodes to get updated
if ( low != high) {
lazy[ 2 * ind+ 1 ] += lazy[ ind] ;
lazy[ 2 * ind+ 2 ] += lazy[ ind] ;
}
lazy[ ind] = 0 ;
}
// no overlap return 0;
if ( high < l or r < low) {
return 0 ;
}
// complete overlap
if ( low>= l && high <= r) return seg[ ind] ;
int mid = ( low + high) >> 1 ;
int left = query( 2 * ind+ 1 , low, mid, l, r) ;
int right = query( 2 * ind+ 2 , mid+ 1 , high, l, r) ;
return left + right;
}
} ;
class STMin {
vector< int> seg, lazy;
public :
STMin( int n) {
seg.resize ( 4 * n) ;
lazy.resize ( 4 * n) ;
}
public :
void build( int ind, int low, int high, int arr[ ] ) {
if ( low == high) {
seg[ ind] = arr[ low] ;
return ;
}
int mid = ( low + high) >> 1 ;
build( 2 * ind+ 1 , low, mid, arr) ;
build( 2 * ind+ 2 , mid+ 1 , high, arr) ;
seg[ ind] = min( seg[ 2 * ind+ 1 ] , seg[ 2 * ind+ 2 ] ) ;
}
public :
void update( int ind, int low, int high, int l, int r,
int val) {
// update the previous remaining updates
// and propogate downwards
if ( lazy[ ind] != 0 ) {
seg[ ind] += lazy[ ind] ;
// propogate the lazy update downwards
// for the remaining nodes to get updated
if ( low != high) {
lazy[ 2 * ind+ 1 ] += lazy[ ind] ;
lazy[ 2 * ind+ 2 ] += lazy[ ind] ;
}
lazy[ ind] = 0 ;
}
// no overlap
// we don't do anything and return
// low high l r or l r low high
if ( high < l or r < low) {
return ;
}
// complete overlap
// l low high r
if ( low>= l && high <= r) {
seg[ ind] += val;
// if a leaf node, it will have childrens
if ( low != high) {
lazy[ 2 * ind+ 1 ] += val;
lazy[ 2 * ind+ 2 ] += val;
}
return ;
}
// last case has to be no overlap case
int mid = ( low + high) >> 1 ;
update( 2 * ind+ 1 , low, mid, l, r, val) ;
update( 2 * ind+ 2 , mid+ 1 , high, l, r, val) ;
seg[ ind] = min( seg[ 2 * ind+ 1 ] , seg[ 2 * ind+ 2 ] ) ;
}
public :
int query( int ind, int low, int high, int l, int r) {
// update if any updates are remaining
// as the node will stay fresh and updated
if ( lazy[ ind] != 0 ) {
seg[ ind] += lazy[ ind] ;
// propogate the lazy update downwards
// for the remaining nodes to get updated
if ( low != high) {
lazy[ 2 * ind+ 1 ] += lazy[ ind] ;
lazy[ 2 * ind+ 2 ] += lazy[ ind] ;
}
lazy[ ind] = 0 ;
}
// no overlap return 0;
if ( high < l or r < low) {
return INT_MAX;
}
// complete overlap
if ( low>= l && high <= r) return seg[ ind] ;
int mid = ( low + high) >> 1 ;
int left = query( 2 * ind+ 1 , low, mid, l, r) ;
int right = query( 2 * ind+ 2 , mid+ 1 , high, l, r) ;
return min( left,right) ;
}
} ;
class ST {
vector< int> seg, lazy;
public :
ST( int n) {
seg.resize ( 4 * n) ;
lazy.resize ( 4 * n) ;
}
public :
void build( int ind, int low, int high, int arr[ ] ) {
if ( low == high) {
seg[ ind] = arr[ low] ;
return ;
}
int mid = ( low + high) >> 1 ;
build( 2 * ind+ 1 , low, mid, arr) ;
build( 2 * ind+ 2 , mid+ 1 , high, arr) ;
seg[ ind] = seg[ 2 * ind+ 1 ] + seg[ 2 * ind+ 2 ] ;
}
public :
void update( int ind, int low, int high, int l, int r,
int val) {
// update the previous remaining updates
// and propogate downwards
if ( lazy[ ind] != 0 ) {
seg[ ind] = ( high - low + 1 ) - seg[ ind] ;
// propogate the lazy update downwards
// for the remaining nodes to get updated
if ( low != high) {
lazy[ 2 * ind+ 1 ] = ! lazy[ 2 * ind + 1 ] ;
lazy[ 2 * ind+ 2 ] = ! lazy[ 2 * ind + 2 ] ;
}
lazy[ ind] = 0 ;
}
// no overlap
// we don't do anything and return
// low high l r or l r low high
if ( high < l or r < low) {
return ;
}
// complete overlap
// l low high r
if ( low>= l && high <= r) {
seg[ ind] = ( high - low + 1 ) - val;
// if a leaf node, it will have childrens
if ( low != high) {
lazy[ 2 * ind+ 1 ] = ! lazy[ 2 * ind + 1 ] ;
lazy[ 2 * ind+ 2 ] = ! lazy[ 2 * ind + 2 ] ;
}
return ;
}
// last case has to be no overlap case
int mid = ( low + high) >> 1 ;
update( 2 * ind+ 1 , low, mid, l, r, val) ;
update( 2 * ind+ 2 , mid+ 1 , high, l, r, val) ;
seg[ ind] = seg[ 2 * ind+ 1 ] + seg[ 2 * ind+ 2 ] ;
}
public :
int query( int ind, int low, int high, int l, int r) {
// update if any updates are remaining
// as the node will stay fresh and updated
if ( lazy[ ind] != 0 ) {
seg[ ind] = ( high - low + 1 ) - seg[ ind] ;
// propogate the lazy update downwards
// for the remaining nodes to get updated
if ( low != high) {
lazy[ 2 * ind+ 1 ] = ! lazy[ 2 * ind + 1 ] ;
lazy[ 2 * ind+ 2 ] = ! lazy[ 2 * ind + 2 ] ;
}
lazy[ ind] = 0 ;
}
// no overlap return 0;
if ( high < l or r < low) {
return 0 ;
}
// complete overlap
if ( low>= l && high <= r) return seg[ ind] ;
int mid = ( low + high) >> 1 ;
int left = query( 2 * ind+ 1 , low, mid, l, r) ;
int right = query( 2 * ind+ 2 , mid+ 1 , high, l, r) ;
return left + right;
}
} ;
int main( ) {
#ifndef ONLINE_JUDGE
freopen( "input.txt" , "r" , stdin) ;
freopen( "output.txt" , "w" , stdout) ;
#endif
int n;
cin >> n;
int arr[ n] ;
for ( int i = 0 ; i< n; i++ ) cin >> arr[ i] ;
ST st( n+ 1 ) ;
st.build ( 0 ,0 ,n- 1 , arr) ;
int q;
cin >> q;
while ( q-- ) {
int type;
cin >> type;
if ( type== 1 ) {
int l, r;
cin >> l >> r;
cout << st.query ( 0 ,0 ,n- 1 ,l,r) << endl;
}
else {
int l, r, val;
cin >> l >> r >> val;
st.update ( 0 ,0 ,n- 1 ,l,r,val) ;
}
}
return 0 ;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsgCmNsYXNzIFNUIHsKCXZlY3RvcjxpbnQ+IHNlZywgbGF6eTsgCnB1YmxpYzogCglTVChpbnQgbikgewoJCXNlZy5yZXNpemUoNCAqIG4pOyAKCQlsYXp5LnJlc2l6ZSg0ICogbik7IAoJfQpwdWJsaWM6IAoJdm9pZCBidWlsZChpbnQgaW5kLCBpbnQgbG93LCBpbnQgaGlnaCwgaW50IGFycltdKSB7CgkJaWYobG93ID09IGhpZ2gpIHsKCQkJc2VnW2luZF0gPSBhcnJbbG93XTsKCQkJcmV0dXJuOyAKCQl9CgkJaW50IG1pZCA9IChsb3cgKyBoaWdoKSA+PiAxOyAKCQlidWlsZCgyKmluZCsxLCBsb3csIG1pZCwgYXJyKTsgCgkJYnVpbGQoMippbmQrMiwgbWlkKzEsIGhpZ2gsIGFycik7IAoJCXNlZ1tpbmRdID0gc2VnWzIqaW5kKzFdICsgc2VnWzIqaW5kKzJdOwoJfQpwdWJsaWM6Cgl2b2lkIHVwZGF0ZShpbnQgaW5kLCBpbnQgbG93LCBpbnQgaGlnaCwgaW50IGwsIGludCByLCAKCQlpbnQgdmFsKSB7CgkJLy8gdXBkYXRlIHRoZSBwcmV2aW91cyByZW1haW5pbmcgdXBkYXRlcyAKCQkvLyBhbmQgcHJvcG9nYXRlIGRvd253YXJkcyAKCQlpZihsYXp5W2luZF0gIT0gMCkgewoJCQlzZWdbaW5kXSArPSAoaGlnaCAtIGxvdyArIDEpICogbGF6eVtpbmRdOyAKCQkJLy8gcHJvcG9nYXRlIHRoZSBsYXp5IHVwZGF0ZSBkb3dud2FyZHMKCQkJLy8gZm9yIHRoZSByZW1haW5pbmcgbm9kZXMgdG8gZ2V0IHVwZGF0ZWQgCgkJCWlmKGxvdyAhPSBoaWdoKSB7CgkJCQlsYXp5WzIqaW5kKzFdICs9IGxhenlbaW5kXTsgCgkJCQlsYXp5WzIqaW5kKzJdICs9IGxhenlbaW5kXTsgCgkJCX0KCgkJCWxhenlbaW5kXSA9IDA7IAoJCX0KCgkJLy8gbm8gb3ZlcmxhcCAKCQkvLyB3ZSBkb24ndCBkbyBhbnl0aGluZyBhbmQgcmV0dXJuIAoJCS8vIGxvdyBoaWdoIGwgciBvciBsIHIgbG93IGhpZ2ggCgkJaWYoaGlnaCA8IGwgb3IgciA8IGxvdykgewoJCQlyZXR1cm47IAoJCX0KCgkJLy8gY29tcGxldGUgb3ZlcmxhcCAKCQkvLyBsIGxvdyBoaWdoIHIgCgkJaWYobG93Pj1sICYmIGhpZ2ggPD0gcikgewoJCQlzZWdbaW5kXSArPSAoaGlnaCAtIGxvdyArIDEpICogdmFsOyAKCQkJLy8gaWYgYSBsZWFmIG5vZGUsIGl0IHdpbGwgaGF2ZSBjaGlsZHJlbnMKCQkJaWYobG93ICE9IGhpZ2gpIHsKCQkJCWxhenlbMippbmQrMV0gKz0gdmFsOyAKCQkJCWxhenlbMippbmQrMl0gKz0gdmFsOyAKCQkJfQoJCQlyZXR1cm47IAoJCX0KCQkvLyBsYXN0IGNhc2UgaGFzIHRvIGJlIG5vIG92ZXJsYXAgY2FzZQoJCWludCBtaWQgPSAobG93ICsgaGlnaCkgPj4gMTsgCgkJdXBkYXRlKDIqaW5kKzEsIGxvdywgbWlkLCBsLCByLCB2YWwpOwoJCXVwZGF0ZSgyKmluZCsyLCBtaWQrMSwgaGlnaCwgbCwgciwgdmFsKTsgCgkJc2VnW2luZF0gPSBzZWdbMippbmQrMV0gKyBzZWdbMippbmQrMl07IAoJfQpwdWJsaWM6IAoJaW50IHF1ZXJ5KGludCBpbmQsIGludCBsb3csIGludCBoaWdoLCBpbnQgbCwgaW50IHIpIHsKCgkJLy8gdXBkYXRlIGlmIGFueSB1cGRhdGVzIGFyZSByZW1haW5pbmcgCgkJLy8gYXMgdGhlIG5vZGUgd2lsbCBzdGF5IGZyZXNoIGFuZCB1cGRhdGVkIAoJCWlmKGxhenlbaW5kXSAhPSAwKSB7CgkJCXNlZ1tpbmRdICs9IChoaWdoIC0gbG93ICsgMSkgKiBsYXp5W2luZF07IAoJCQkvLyBwcm9wb2dhdGUgdGhlIGxhenkgdXBkYXRlIGRvd253YXJkcwoJCQkvLyBmb3IgdGhlIHJlbWFpbmluZyBub2RlcyB0byBnZXQgdXBkYXRlZCAKCQkJaWYobG93ICE9IGhpZ2gpIHsKCQkJCWxhenlbMippbmQrMV0gKz0gbGF6eVtpbmRdOyAKCQkJCWxhenlbMippbmQrMl0gKz0gbGF6eVtpbmRdOyAKCQkJfQoKCQkJbGF6eVtpbmRdID0gMDsgCgkJfQoKCQkvLyBubyBvdmVybGFwIHJldHVybiAwOyAKCQlpZihoaWdoIDwgbCBvciByIDwgbG93KSB7CgkJCXJldHVybiAwOyAKCQl9CgoJCS8vIGNvbXBsZXRlIG92ZXJsYXAgCgkJaWYobG93Pj1sICYmIGhpZ2ggPD0gcikgcmV0dXJuIHNlZ1tpbmRdOyAKCgkJaW50IG1pZCA9IChsb3cgKyBoaWdoKSA+PiAxOyAKCQlpbnQgbGVmdCA9IHF1ZXJ5KDIqaW5kKzEsIGxvdywgbWlkLCBsLCByKTsKCQlpbnQgcmlnaHQgPSBxdWVyeSgyKmluZCsyLCBtaWQrMSwgaGlnaCwgbCwgcik7CgkJcmV0dXJuIGxlZnQgKyByaWdodDsgCgl9Cn07CgoKY2xhc3MgU1RNaW4gewoJdmVjdG9yPGludD4gc2VnLCBsYXp5OyAKcHVibGljOiAKCVNUTWluKGludCBuKSB7CgkJc2VnLnJlc2l6ZSg0ICogbik7IAoJCWxhenkucmVzaXplKDQgKiBuKTsgCgl9CnB1YmxpYzogCgl2b2lkIGJ1aWxkKGludCBpbmQsIGludCBsb3csIGludCBoaWdoLCBpbnQgYXJyW10pIHsKCQlpZihsb3cgPT0gaGlnaCkgewoJCQlzZWdbaW5kXSA9IGFycltsb3ddOwoJCQlyZXR1cm47IAoJCX0KCQlpbnQgbWlkID0gKGxvdyArIGhpZ2gpID4+IDE7IAoJCWJ1aWxkKDIqaW5kKzEsIGxvdywgbWlkLCBhcnIpOyAKCQlidWlsZCgyKmluZCsyLCBtaWQrMSwgaGlnaCwgYXJyKTsgCgkJc2VnW2luZF0gPSBtaW4oc2VnWzIqaW5kKzFdLCBzZWdbMippbmQrMl0pOwoJfQpwdWJsaWM6Cgl2b2lkIHVwZGF0ZShpbnQgaW5kLCBpbnQgbG93LCBpbnQgaGlnaCwgaW50IGwsIGludCByLCAKCQlpbnQgdmFsKSB7CgkJLy8gdXBkYXRlIHRoZSBwcmV2aW91cyByZW1haW5pbmcgdXBkYXRlcyAKCQkvLyBhbmQgcHJvcG9nYXRlIGRvd253YXJkcyAKCQlpZihsYXp5W2luZF0gIT0gMCkgewoJCQlzZWdbaW5kXSArPSBsYXp5W2luZF07IAoJCQkvLyBwcm9wb2dhdGUgdGhlIGxhenkgdXBkYXRlIGRvd253YXJkcwoJCQkvLyBmb3IgdGhlIHJlbWFpbmluZyBub2RlcyB0byBnZXQgdXBkYXRlZCAKCQkJaWYobG93ICE9IGhpZ2gpIHsKCQkJCWxhenlbMippbmQrMV0gKz0gbGF6eVtpbmRdOyAKCQkJCWxhenlbMippbmQrMl0gKz0gbGF6eVtpbmRdOyAKCQkJfQoKCQkJbGF6eVtpbmRdID0gMDsgCgkJfQoKCQkvLyBubyBvdmVybGFwIAoJCS8vIHdlIGRvbid0IGRvIGFueXRoaW5nIGFuZCByZXR1cm4gCgkJLy8gbG93IGhpZ2ggbCByIG9yIGwgciBsb3cgaGlnaCAKCQlpZihoaWdoIDwgbCBvciByIDwgbG93KSB7CgkJCXJldHVybjsgCgkJfQoKCQkvLyBjb21wbGV0ZSBvdmVybGFwIAoJCS8vIGwgbG93IGhpZ2ggciAKCQlpZihsb3c+PWwgJiYgaGlnaCA8PSByKSB7CgkJCXNlZ1tpbmRdICs9IHZhbDsgCgkJCS8vIGlmIGEgbGVhZiBub2RlLCBpdCB3aWxsIGhhdmUgY2hpbGRyZW5zCgkJCWlmKGxvdyAhPSBoaWdoKSB7CgkJCQlsYXp5WzIqaW5kKzFdICs9IHZhbDsgCgkJCQlsYXp5WzIqaW5kKzJdICs9IHZhbDsgCgkJCX0KCQkJcmV0dXJuOyAKCQl9CgkJLy8gbGFzdCBjYXNlIGhhcyB0byBiZSBubyBvdmVybGFwIGNhc2UKCQlpbnQgbWlkID0gKGxvdyArIGhpZ2gpID4+IDE7IAoJCXVwZGF0ZSgyKmluZCsxLCBsb3csIG1pZCwgbCwgciwgdmFsKTsKCQl1cGRhdGUoMippbmQrMiwgbWlkKzEsIGhpZ2gsIGwsIHIsIHZhbCk7IAoJCXNlZ1tpbmRdID0gbWluKHNlZ1syKmluZCsxXSwgc2VnWzIqaW5kKzJdKTsgCgl9CnB1YmxpYzogCglpbnQgcXVlcnkoaW50IGluZCwgaW50IGxvdywgaW50IGhpZ2gsIGludCBsLCBpbnQgcikgewoKCQkvLyB1cGRhdGUgaWYgYW55IHVwZGF0ZXMgYXJlIHJlbWFpbmluZyAKCQkvLyBhcyB0aGUgbm9kZSB3aWxsIHN0YXkgZnJlc2ggYW5kIHVwZGF0ZWQgCgkJaWYobGF6eVtpbmRdICE9IDApIHsKCQkJc2VnW2luZF0gKz0gbGF6eVtpbmRdOyAKCQkJLy8gcHJvcG9nYXRlIHRoZSBsYXp5IHVwZGF0ZSBkb3dud2FyZHMKCQkJLy8gZm9yIHRoZSByZW1haW5pbmcgbm9kZXMgdG8gZ2V0IHVwZGF0ZWQgCgkJCWlmKGxvdyAhPSBoaWdoKSB7CgkJCQlsYXp5WzIqaW5kKzFdICs9IGxhenlbaW5kXTsgCgkJCQlsYXp5WzIqaW5kKzJdICs9IGxhenlbaW5kXTsgCgkJCX0KCgkJCWxhenlbaW5kXSA9IDA7IAoJCX0KCgkJLy8gbm8gb3ZlcmxhcCByZXR1cm4gMDsgCgkJaWYoaGlnaCA8IGwgb3IgciA8IGxvdykgewoJCQlyZXR1cm4gSU5UX01BWDsgCgkJfQoKCQkvLyBjb21wbGV0ZSBvdmVybGFwIAoJCWlmKGxvdz49bCAmJiBoaWdoIDw9IHIpIHJldHVybiBzZWdbaW5kXTsgCgoJCWludCBtaWQgPSAobG93ICsgaGlnaCkgPj4gMTsgCgkJaW50IGxlZnQgPSBxdWVyeSgyKmluZCsxLCBsb3csIG1pZCwgbCwgcik7CgkJaW50IHJpZ2h0ID0gcXVlcnkoMippbmQrMiwgbWlkKzEsIGhpZ2gsIGwsIHIpOwoJCXJldHVybiBtaW4obGVmdCxyaWdodCk7IAoJfQp9OwoKCmNsYXNzIFNUIHsKCXZlY3RvcjxpbnQ+IHNlZywgbGF6eTsgCnB1YmxpYzogCglTVChpbnQgbikgewoJCXNlZy5yZXNpemUoNCAqIG4pOyAKCQlsYXp5LnJlc2l6ZSg0ICogbik7IAoJfQpwdWJsaWM6IAoJdm9pZCBidWlsZChpbnQgaW5kLCBpbnQgbG93LCBpbnQgaGlnaCwgaW50IGFycltdKSB7CgkJaWYobG93ID09IGhpZ2gpIHsKCQkJc2VnW2luZF0gPSBhcnJbbG93XTsKCQkJcmV0dXJuOyAKCQl9CgkJaW50IG1pZCA9IChsb3cgKyBoaWdoKSA+PiAxOyAKCQlidWlsZCgyKmluZCsxLCBsb3csIG1pZCwgYXJyKTsgCgkJYnVpbGQoMippbmQrMiwgbWlkKzEsIGhpZ2gsIGFycik7IAoJCXNlZ1tpbmRdID0gc2VnWzIqaW5kKzFdICsgc2VnWzIqaW5kKzJdOwoJfQpwdWJsaWM6Cgl2b2lkIHVwZGF0ZShpbnQgaW5kLCBpbnQgbG93LCBpbnQgaGlnaCwgaW50IGwsIGludCByLCAKCQlpbnQgdmFsKSB7CgkJLy8gdXBkYXRlIHRoZSBwcmV2aW91cyByZW1haW5pbmcgdXBkYXRlcyAKCQkvLyBhbmQgcHJvcG9nYXRlIGRvd253YXJkcyAKCQlpZihsYXp5W2luZF0gIT0gMCkgewoJCQlzZWdbaW5kXSA9IChoaWdoIC0gbG93ICsgMSkgLSBzZWdbaW5kXTsgCgkJCS8vIHByb3BvZ2F0ZSB0aGUgbGF6eSB1cGRhdGUgZG93bndhcmRzCgkJCS8vIGZvciB0aGUgcmVtYWluaW5nIG5vZGVzIHRvIGdldCB1cGRhdGVkIAoJCQlpZihsb3cgIT0gaGlnaCkgewoJCQkJbGF6eVsyKmluZCsxXSA9ICFsYXp5WzIqaW5kICsgMV07IAoJCQkJbGF6eVsyKmluZCsyXSA9ICFsYXp5WzIqaW5kICsgMl07IAoJCQl9CgoJCQlsYXp5W2luZF0gPSAwOyAKCQl9CgoJCS8vIG5vIG92ZXJsYXAgCgkJLy8gd2UgZG9uJ3QgZG8gYW55dGhpbmcgYW5kIHJldHVybiAKCQkvLyBsb3cgaGlnaCBsIHIgb3IgbCByIGxvdyBoaWdoIAoJCWlmKGhpZ2ggPCBsIG9yIHIgPCBsb3cpIHsKCQkJcmV0dXJuOyAKCQl9CgoJCS8vIGNvbXBsZXRlIG92ZXJsYXAgCgkJLy8gbCBsb3cgaGlnaCByIAoJCWlmKGxvdz49bCAmJiBoaWdoIDw9IHIpIHsKCQkJc2VnW2luZF0gPSAoaGlnaCAtIGxvdyArIDEpIC0gdmFsOyAKCQkJLy8gaWYgYSBsZWFmIG5vZGUsIGl0IHdpbGwgaGF2ZSBjaGlsZHJlbnMKCQkJaWYobG93ICE9IGhpZ2gpIHsKCQkJCWxhenlbMippbmQrMV0gPSAhbGF6eVsyKmluZCArIDFdOyAKCQkJCWxhenlbMippbmQrMl0gPSAhbGF6eVsyKmluZCArIDJdOyAKCQkJfQoJCQlyZXR1cm47IAoJCX0KCQkvLyBsYXN0IGNhc2UgaGFzIHRvIGJlIG5vIG92ZXJsYXAgY2FzZQoJCWludCBtaWQgPSAobG93ICsgaGlnaCkgPj4gMTsgCgkJdXBkYXRlKDIqaW5kKzEsIGxvdywgbWlkLCBsLCByLCB2YWwpOwoJCXVwZGF0ZSgyKmluZCsyLCBtaWQrMSwgaGlnaCwgbCwgciwgdmFsKTsgCgkJc2VnW2luZF0gPSBzZWdbMippbmQrMV0gKyBzZWdbMippbmQrMl07IAoJfQpwdWJsaWM6IAoJaW50IHF1ZXJ5KGludCBpbmQsIGludCBsb3csIGludCBoaWdoLCBpbnQgbCwgaW50IHIpIHsKCgkJLy8gdXBkYXRlIGlmIGFueSB1cGRhdGVzIGFyZSByZW1haW5pbmcgCgkJLy8gYXMgdGhlIG5vZGUgd2lsbCBzdGF5IGZyZXNoIGFuZCB1cGRhdGVkIAoJCWlmKGxhenlbaW5kXSAhPSAwKSB7CgkJCXNlZ1tpbmRdID0gKGhpZ2ggLSBsb3cgKyAxKSAtIHNlZ1tpbmRdOyAKCQkJLy8gcHJvcG9nYXRlIHRoZSBsYXp5IHVwZGF0ZSBkb3dud2FyZHMKCQkJLy8gZm9yIHRoZSByZW1haW5pbmcgbm9kZXMgdG8gZ2V0IHVwZGF0ZWQgCgkJCWlmKGxvdyAhPSBoaWdoKSB7CgkJCQlsYXp5WzIqaW5kKzFdID0gIWxhenlbMippbmQgKyAxXTsgCgkJCQlsYXp5WzIqaW5kKzJdID0gIWxhenlbMippbmQgKyAyXTsgCgkJCX0KCgkJCWxhenlbaW5kXSA9IDA7IAoJCX0KCgkJLy8gbm8gb3ZlcmxhcCByZXR1cm4gMDsgCgkJaWYoaGlnaCA8IGwgb3IgciA8IGxvdykgewoJCQlyZXR1cm4gMDsgCgkJfQoKCQkvLyBjb21wbGV0ZSBvdmVybGFwIAoJCWlmKGxvdz49bCAmJiBoaWdoIDw9IHIpIHJldHVybiBzZWdbaW5kXTsgCgoJCWludCBtaWQgPSAobG93ICsgaGlnaCkgPj4gMTsgCgkJaW50IGxlZnQgPSBxdWVyeSgyKmluZCsxLCBsb3csIG1pZCwgbCwgcik7CgkJaW50IHJpZ2h0ID0gcXVlcnkoMippbmQrMiwgbWlkKzEsIGhpZ2gsIGwsIHIpOwoJCXJldHVybiBsZWZ0ICsgcmlnaHQ7IAoJfQp9OwppbnQgbWFpbigpIHsKCSNpZm5kZWYgT05MSU5FX0pVREdFCglmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsgCglmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOyAKCSNlbmRpZgoJaW50IG47CgljaW4gPj4gbjsgCglpbnQgYXJyW25dOwoJZm9yKGludCBpID0gMDtpPG47aSsrKSBjaW4gPj4gYXJyW2ldOyAKCVNUIHN0KG4rMSk7IAoJc3QuYnVpbGQoMCwwLG4tMSwgYXJyKTsgCgoJaW50IHE7CgljaW4gPj4gcTsgCgl3aGlsZShxLS0pIHsKCQlpbnQgdHlwZTsKCQljaW4gPj4gdHlwZTsgCgkJaWYodHlwZT09MSkgewoJCQlpbnQgbCwgcjsKCQkJY2luID4+IGwgPj4gcjsKCQkJY291dCA8PCBzdC5xdWVyeSgwLDAsbi0xLGwscikgPDwgZW5kbDsgCgkJfQoJCWVsc2UgewoJCQlpbnQgbCwgciwgdmFsOwoJCQljaW4gPj4gbCA+PiByID4+IHZhbDsgCgkJCXN0LnVwZGF0ZSgwLDAsbi0xLGwscix2YWwpOwoJCX0KCX0KCXJldHVybiAwOyAKfQoKCgoKCgoKCg==
compilation info
Main.java:1: error: illegal character: '#'
#include<bits/stdc++.h>
^
Main.java:1: error: class, interface, or enum expected
#include<bits/stdc++.h>
^
Main.java:5: error: illegal start of type
public:
^
Main.java:10: error: illegal start of type
public:
^
Main.java:21: error: illegal start of type
public:
^
Main.java:41: error: ')' expected
if(high < l or r < low) {
^
Main.java:41: error: ';' expected
if(high < l or r < low) {
^
Main.java:41: error: variable declaration not allowed here
if(high < l or r < low) {
^
Main.java:41: error: > expected
if(high < l or r < low) {
^
Main.java:62: error: illegal start of type
public:
^
Main.java:80: error: ')' expected
if(high < l or r < low) {
^
Main.java:80: error: ';' expected
if(high < l or r < low) {
^
Main.java:80: error: variable declaration not allowed here
if(high < l or r < low) {
^
Main.java:80: error: > expected
if(high < l or r < low) {
^
Main.java:97: error: illegal start of type
public:
^
Main.java:102: error: illegal start of type
public:
^
Main.java:113: error: illegal start of type
public:
^
Main.java:133: error: ')' expected
if(high < l or r < low) {
^
Main.java:133: error: ';' expected
if(high < l or r < low) {
^
Main.java:133: error: variable declaration not allowed here
if(high < l or r < low) {
^
Main.java:133: error: > expected
if(high < l or r < low) {
^
Main.java:154: error: illegal start of type
public:
^
Main.java:172: error: ')' expected
if(high < l or r < low) {
^
Main.java:172: error: ';' expected
if(high < l or r < low) {
^
Main.java:172: error: variable declaration not allowed here
if(high < l or r < low) {
^
Main.java:172: error: > expected
if(high < l or r < low) {
^
Main.java:189: error: illegal start of type
public:
^
Main.java:194: error: illegal start of type
public:
^
Main.java:205: error: illegal start of type
public:
^
Main.java:225: error: ')' expected
if(high < l or r < low) {
^
Main.java:225: error: ';' expected
if(high < l or r < low) {
^
Main.java:225: error: variable declaration not allowed here
if(high < l or r < low) {
^
Main.java:225: error: > expected
if(high < l or r < low) {
^
Main.java:246: error: illegal start of type
public:
^
Main.java:264: error: ')' expected
if(high < l or r < low) {
^
Main.java:264: error: ';' expected
if(high < l or r < low) {
^
Main.java:264: error: variable declaration not allowed here
if(high < l or r < low) {
^
Main.java:264: error: > expected
if(high < l or r < low) {
^
Main.java:277: error: class, interface, or enum expected
int main() {
^
Main.java:278: error: illegal character: '#'
#ifndef ONLINE_JUDGE
^
Main.java:280: error: class, interface, or enum expected
freopen("output.txt", "w", stdout);
^
Main.java:281: error: illegal character: '#'
#endif
^
Main.java:282: error: class, interface, or enum expected
int n;
^
Main.java:283: error: class, interface, or enum expected
cin >> n;
^
Main.java:284: error: class, interface, or enum expected
int arr[n];
^
Main.java:285: error: class, interface, or enum expected
for(int i = 0;i<n;i++) cin >> arr[i];
^
Main.java:285: error: class, interface, or enum expected
for(int i = 0;i<n;i++) cin >> arr[i];
^
Main.java:285: error: class, interface, or enum expected
for(int i = 0;i<n;i++) cin >> arr[i];
^
Main.java:286: error: class, interface, or enum expected
ST st(n+1);
^
Main.java:287: error: class, interface, or enum expected
st.build(0,0,n-1, arr);
^
Main.java:289: error: class, interface, or enum expected
int q;
^
Main.java:290: error: class, interface, or enum expected
cin >> q;
^
Main.java:291: error: class, interface, or enum expected
while(q--) {
^
Main.java:293: error: class, interface, or enum expected
cin >> type;
^
Main.java:294: error: class, interface, or enum expected
if(type==1) {
^
Main.java:296: error: class, interface, or enum expected
cin >> l >> r;
^
Main.java:297: error: class, interface, or enum expected
cout << st.query(0,0,n-1,l,r) << endl;
^
Main.java:298: error: class, interface, or enum expected
}
^
Main.java:301: error: class, interface, or enum expected
cin >> l >> r >> val;
^
Main.java:302: error: class, interface, or enum expected
st.update(0,0,n-1,l,r,val);
^
Main.java:303: error: class, interface, or enum expected
}
^
Main.java:306: error: class, interface, or enum expected
}
^
62 errors
stdout