D - 長方形

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

長さ W の数列 a_1, a_2, ..., a_W と、長さ H の数列 b_1, b_2, ..., b_H が与えられます。

左から i 番目、上から j 番目のマス目には a_i + b_j が書き込まれた、W \times H のマス目を考えます。

Q 個の以下のようなクエリが与えられるので、処理してください。

  • A, B が与えられるので、左から A 番目以内、上から B 番目以内のマス目たちの中から、選んだ部分が長方形になるように幾つかマス目を選んだ時の、選んだマス目の値の総和の最大値を出力。

なお、マス目を 1 つも選ばないことはできません。

制約

  • 1 ≦ W, H ≦ 2000
  • 1 ≦ Q ≦ 2000
  • 1 ≦ A ≦ W
  • 1 ≦ B ≦ H
  • -100,000 ≦ a_i, b_i ≦ 100,000

入力

入力は以下の形式で標準入力から与えられる。

W H
a_1 a_2 ... a_W
b_1 b_2 ... b_H
Q
A_1 B_1
A_2 B_2
:
A_Q B_Q

ただし、A_i, B_i はそれぞれ i 個目のクエリの A, B を表します。

出力

Q 行出力する。

i 行目には、i 番目のクエリの結果を出力する。


入力例1

2 2
0 10
0 -1
4
1 1
1 2
2 1
2 2

出力例1

0
0
10
19

入力例2

3 3
1 10 100
1000 10000 100000
9
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

出力例2

1001
11002
111003
2011
22022
222033
3111
33222
333333

入力例3

10 8
2 -4 0 0 -1 4 5 0 -3 0
2 0 0 -3 -5 -5 -4 -4
10
2 6
1 4
1 2
5 7
1 5
7 6
7 4
1 5
3 5
10 7

出力例3

8
8
6
8
8
34
34
8
8
36