GSS5 - Can you answer these queries V


You are given a sequence A[1], A[2] ... A[N]. (|A[i]| ≤ 10000, 1 ≤ N ≤ 10000). A query is defined as follows:

Query(x1, y1, x2, y2) = Max { A[i] + A[i+1] + ... + A[j]; x1 ≤ i ≤ y1, x2 ≤ j ≤ y2 and x1 ≤ x2, y1 ≤ y2 }.

Given M queries (1 ≤ M ≤ 10000), your program must output the results of these queries.

Input

The first line of the input consist of the number of tests cases ≤ 5. Each case consist of the integer N and the sequence A. Then the integer M. M lines follow, contains 4 numbers x1, y1, x2, y2.

Output

Your program should output the results of the M queries for each test case, one query per line.

Example

Input:
2
6 3 -2 1 -4 5 2
2
1 1 2 3
1 3 2 5
1 1
1
1 1 1 1

Output:
2
3
1

hide comments
Mostafa 36a2: 2014-08-29 19:18:03

@EB or @PS : please fix the statement on
x2 j <= y2
should be x2 <= j <= y2 .

--ans(Francky)--> Done.

Last edit: 2014-12-04 12:23:00

Added by:Frank Rafael Arteaga
Date:2008-08-06
Time limit:1s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: C99 ERL JS-RHINO NODEJS PERL6 VB.NET
Resource:K.-Y. Chen and K.-M. Chao, On the Range Maximum-Sum Segment Query Problem, 2007.