#![allow(warnings)]
use std:: io ;
use std:: str :: FromStr ;
enum VecFormate {
Inline,
NotInline,
}
fn take_item< T> ( ) -> T
where
T: FromStr /*+ std::fmt::Debug*/ ,
T:: Err : std:: fmt :: Debug ,
{
let mut s = String:: new ( ) ;
io:: stdin ( ) .read_line ( & mut s) .unwrap ( ) ;
s.trim ( ) .parse ( ) .unwrap ( )
}
fn take_vec< T> ( n: u32, array_formate: VecFormate) -> Vec< T>
where
T: FromStr /*+ std::fmt::Debug*/ ,
T:: Err : std:: fmt :: Debug , // Ensure the type implements FromStr and provides a debug error
{
let mut v: Vec< T> = Vec:: new ( ) ;
match array_formate {
VecFormate:: Inline => {
let mut input = String:: new ( ) ;
io:: stdin ( ) .read_line ( & mut input) .unwrap ( ) ;
v = input
.trim ( )
.split_whitespace ( )
.map ( | x| x.parse ::< T> ( ) .unwrap ( ) ) // Parse input into generic type
.collect ( ) ;
}
VecFormate:: NotInline => {
// We don't need to read an extra line before the loop
for _ in 0 ..n {
let mut s = String:: new ( ) ;
std:: io :: stdin ( ) .read_line ( & mut s) .unwrap ( ) ;
v.push ( s.trim ( ) .parse ::< T> ( ) .unwrap ( ) ) ; // Parse input into generic type and push to vector
}
}
}
if v.len ( ) as u32 > n {
panic! ( "You added additional {:?} items" , v.len ( ) as u32 - n) ;
} else if n > v.len ( ) as u32 {
panic! ( "You missed remaining {:?} items" , n - v.len ( ) as u32) ;
}
v
}
fn main( ) {
let n: u32 = take_item( ) ;
let mut v: Vec< u64> = take_vec( n, VecFormate:: Inline ) ;
let m: u32 = take_item( ) ;
let mut v2 = v.clone ( ) ;
v2.sort ( ) ;
v2 = v2.iter_mut ( ) .scan ( 0 , | sum, i| {
* sum += * i;
* i = * sum;
Some( * sum)
} ) .collect ::< Vec< _>> ( ) ;
v = v.iter_mut ( ) .scan ( 0 , | sum, i| {
* sum += * i;
* i = * sum;
Some( * sum)
} ) .collect ::< Vec< _>> ( ) ;
for i in 0 ..m {
let lrn: Vec< u32> = take_vec( 3 , VecFormate:: Inline ) ;
if lrn.first ( ) == Some( & 1 ) {
if lrn[ 1 ] == 1 {
print! ( "{:?}\n " , v[ lrn[ 2 ] as usize - 1 ] ) ;
continue ;
}
print! ( "{:?}\n " , v[ lrn[ 2 ] as usize - 1 ] - v[ lrn[ 1 ] as usize - 2 ] ) ;
} else {
if lrn[ 1 ] == 1 {
print! ( "{:?}\n " , v2[ lrn[ 2 ] as usize - 1 ] ) ;
continue ;
}
print! ( "{:?}\n " , v2[ lrn[ 2 ] as usize - 1 ] - v2[ lrn[ 1 ] as usize - 2 ] ) ;
}
}
}
IyFbYWxsb3cod2FybmluZ3MpXQp1c2Ugc3RkOjppbzsKdXNlIHN0ZDo6c3RyOjpGcm9tU3RyOwoKZW51bSBWZWNGb3JtYXRlIHsKICAgIElubGluZSwKICAgIE5vdElubGluZSwKfQoKZm4gdGFrZV9pdGVtPFQ+KCkgLT4gVAp3aGVyZQogICAgVDogRnJvbVN0ciAvKisgc3RkOjpmbXQ6OkRlYnVnKi8sCiAgICBUOjpFcnI6IHN0ZDo6Zm10OjpEZWJ1ZywKewogICAgbGV0IG11dCBzID0gU3RyaW5nOjpuZXcoKTsKICAgIGlvOjpzdGRpbigpLnJlYWRfbGluZSgmbXV0IHMpLnVud3JhcCgpOwogICAgcy50cmltKCkucGFyc2UoKS51bndyYXAoKQp9CgpmbiB0YWtlX3ZlYzxUPihuOiB1MzIsIGFycmF5X2Zvcm1hdGU6IFZlY0Zvcm1hdGUpIC0+IFZlYzxUPgp3aGVyZQogICAgVDogRnJvbVN0ciAvKisgc3RkOjpmbXQ6OkRlYnVnKi8sCiAgICBUOjpFcnI6IHN0ZDo6Zm10OjpEZWJ1ZywgLy8gRW5zdXJlIHRoZSB0eXBlIGltcGxlbWVudHMgRnJvbVN0ciBhbmQgcHJvdmlkZXMgYSBkZWJ1ZyBlcnJvcgp7CiAgICBsZXQgbXV0IHY6IFZlYzxUPiA9IFZlYzo6bmV3KCk7CiAgICBtYXRjaCBhcnJheV9mb3JtYXRlIHsKICAgICAgICBWZWNGb3JtYXRlOjpJbmxpbmUgPT4gewogICAgICAgICAgICBsZXQgbXV0IGlucHV0ID0gU3RyaW5nOjpuZXcoKTsKICAgICAgICAgICAgaW86OnN0ZGluKCkucmVhZF9saW5lKCZtdXQgaW5wdXQpLnVud3JhcCgpOwogICAgICAgICAgICB2ID0gaW5wdXQKICAgICAgICAgICAgICAgIC50cmltKCkKICAgICAgICAgICAgICAgIC5zcGxpdF93aGl0ZXNwYWNlKCkKICAgICAgICAgICAgICAgIC5tYXAofHh8IHgucGFyc2U6OjxUPigpLnVud3JhcCgpKSAvLyBQYXJzZSBpbnB1dCBpbnRvIGdlbmVyaWMgdHlwZQogICAgICAgICAgICAgICAgLmNvbGxlY3QoKTsKICAgICAgICB9CiAgICAgICAgVmVjRm9ybWF0ZTo6Tm90SW5saW5lID0+IHsKICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byByZWFkIGFuIGV4dHJhIGxpbmUgYmVmb3JlIHRoZSBsb29wCiAgICAgICAgICAgIGZvciBfIGluIDAuLm4gewogICAgICAgICAgICAgICAgbGV0IG11dCBzID0gU3RyaW5nOjpuZXcoKTsKICAgICAgICAgICAgICAgIHN0ZDo6aW86OnN0ZGluKCkucmVhZF9saW5lKCZtdXQgcykudW53cmFwKCk7CiAgICAgICAgICAgICAgICB2LnB1c2gocy50cmltKCkucGFyc2U6OjxUPigpLnVud3JhcCgpKTsgLy8gUGFyc2UgaW5wdXQgaW50byBnZW5lcmljIHR5cGUgYW5kIHB1c2ggdG8gdmVjdG9yCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiB2LmxlbigpIGFzIHUzMiA+IG4gewogICAgICAgIHBhbmljISgiWW91IGFkZGVkIGFkZGl0aW9uYWwgezo/fSBpdGVtcyIsIHYubGVuKCkgYXMgdTMyIC0gbik7CiAgICB9IGVsc2UgaWYgbiA+IHYubGVuKCkgYXMgdTMyIHsKICAgICAgICBwYW5pYyEoIllvdSBtaXNzZWQgcmVtYWluaW5nIHs6P30gaXRlbXMiLCBuIC0gdi5sZW4oKSBhcyB1MzIpOwogICAgfQogICAgdgp9CgpmbiBtYWluKCkgewogICAgbGV0IG46IHUzMiA9IHRha2VfaXRlbSgpOwogICAgbGV0IG11dCB2OiBWZWM8dTY0PiA9IHRha2VfdmVjKG4sIFZlY0Zvcm1hdGU6OklubGluZSk7CiAgICBsZXQgbTogdTMyID0gdGFrZV9pdGVtKCk7CgogICAgbGV0IG11dCB2MiA9IHYuY2xvbmUoKTsKICAgIHYyLnNvcnQoKTsKICAgIAogICAgdjIgPSB2Mi5pdGVyX211dCgpLnNjYW4oMCwgfHN1bSwgaXwgewogICAgICAgICpzdW0gKz0gKmk7CiAgICAgICAgKmkgPSAqc3VtOwogICAgICAgIFNvbWUoKnN1bSkKICAgIH0pLmNvbGxlY3Q6OjxWZWM8Xz4+KCk7ICAKCiAgICB2ID0gdi5pdGVyX211dCgpLnNjYW4oMCwgfHN1bSwgaXwgewogICAgICAgICpzdW0gKz0gKmk7CiAgICAgICAgKmkgPSAqc3VtOwogICAgICAgIFNvbWUoKnN1bSkgCiAgICB9KS5jb2xsZWN0Ojo8VmVjPF8+PigpOyAgCiAgICAKICAgIGZvciBpIGluIDAuLm0gewogICAgICAgIGxldCBscm46IFZlYzx1MzI+ID0gdGFrZV92ZWMoMywgVmVjRm9ybWF0ZTo6SW5saW5lKTsKICAgICAgICBpZiBscm4uZmlyc3QoKSA9PSBTb21lKCYxKSB7CiAgICAgICAgICAgIGlmIGxyblsxXSA9PSAxewogICAgICAgICAgICAgICAgcHJpbnQhKCJ7Oj99XG4iLCB2W2xyblsyXSBhcyB1c2l6ZSAtIDFdKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHByaW50ISgiezo/fVxuIiwgdltscm5bMl0gYXMgdXNpemUgLSAxXSAtIHZbbHJuWzFdIGFzIHVzaXplIC0gMl0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIGxyblsxXSA9PSAxewogICAgICAgICAgICAgICAgcHJpbnQhKCJ7Oj99XG4iLCB2Mltscm5bMl0gYXMgdXNpemUgLSAxXSk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludCEoIns6P31cbiIsIHYyW2xyblsyXSBhcyB1c2l6ZSAtIDFdIC0gdjJbbHJuWzFdIGFzIHVzaXplIC0gMl0pOwogICAgICAgIH0KICAgIH0KCn0K