Red and Blue
Contest: Educational Codeforces Round 101 (Rated for Div. 2)
Difficulty rating: 1000
Tags: dp, greedy

Monocarp had a sequence $$$a$$$ consisting of $$$n + m$$$ integers $$$a_1, a_2, \dots, a_{n + m}$$$. He painted the elements into two colors, red and blue; $$$n$$$ elements were painted red, all other $$$m$$$ elements were painted blue.

After painting the elements, he has written two sequences $$$r_1, r_2, \dots, r_n$$$ and $$$b_1, b_2, \dots, b_m$$$. The sequence $$$r$$$ consisted of all red elements of $$$a$$$ in the order they appeared in $$$a$$$; similarly, the sequence $$$b$$$ consisted of all blue elements of $$$a$$$ in the order they appeared in $$$a$$$ as well.

Unfortunately, the original sequence was lost, and Monocarp only has the sequences $$$r$$$ and $$$b$$$. He wants to restore the original sequence. In case there are multiple ways to restore it, he wants to choose a way to restore that maximizes the value of

$$$$$$f(a) = \max(0, a_1, (a_1 + a_2), (a_1 + a_2 + a_3), \dots, (a_1 + a_2 + a_3 + \dots + a_{n + m}))$$$$$$

Help Monocarp to calculate the maximum possible value of $$$f(a)$$$.

Input format:
The first line contains one integer $$$t$$$ ($$$1 \le t \le 1000$$$) — the number of test cases. Then the test cases follow. Each test case consists of four lines.

The first line of each test case contains one integer $$$n$$$ ($$$1 \le n \le 100$$$).

The second line contains $$$n$$$ integers $$$r_1, r_2, \dots, r_n$$$ ($$$-100 \le r_i \le 100$$$).

The third line contains one integer $$$m$$$ ($$$1 \le m \le 100$$$).

The fourth line contains $$$m$$$ integers $$$b_1, b_2, \dots, b_m$$$ ($$$-100 \le b_i \le 100$$$).

Output format:
For each test case, print one integer — the maximum possible value of $$$f(a)$$$.

Constraints:
Time limit: 2.0 s
Memory limit: 512.0 MB

Note:
In the explanations for the sample test cases, red elements are marked as bold.

In the first test case, one of the possible sequences $$$a$$$ is $$$[\mathbf{6}, 2, \mathbf{-5}, 3, \mathbf{7}, \mathbf{-3}, -4]$$$.

In the second test case, one of the possible sequences $$$a$$$ is $$$[10, \mathbf{1}, -3, \mathbf{1}, 2, 2]$$$.

In the third test case, one of the possible sequences $$$a$$$ is $$$[\mathbf{-1}, -1, -2, -3, \mathbf{-2}, -4, -5, \mathbf{-3}, \mathbf{-4}, \mathbf{-5}]$$$.

In the fourth test case, one of the possible sequences $$$a$$$ is $$$[0, \mathbf{0}]$$$.

Example input:
4
4
6 -5 7 -3
3
2 3 -4
2
1 1
4
10 -3 2 2
5
-1 -2 -3 -4 -5
5
-1 -2 -3 -4 -5
1
0
1
0

Example output:
13
13
0
0

Editorial:
Denote $$$p_i$$$ as the sum of first $$$i$$$ elements of $$$r$$$, and $$$q_j$$$ as the sum of first $$$j$$$ elements of $$$b$$$. These values can be calculated in $$$O(n + m)$$$ with prefix sums.
The first solution is to use dynamic programming. Let $$$dp_{i, j}$$$ be the maximum value of $$$f(a)$$$ if we placed the first $$$i$$$ elements of $$$r$$$ and the first $$$j$$$ elements of $$$b$$$. Transitions can be performed in $$$O(1)$$$: we either place an element from $$$r$$$ (then we go to $$$dp_{i + 1, j}$$$ and update it with $$$\max(dp_{i, j}, p_{i + 1} + q_j)$$$), or place an element from $$$b$$$ (then we go to $$$dp_{i, j + 1}$$$ and update it with $$$\max(dp_{i, j}, p_i + q_{j + 1})$$$). The answer is stored in $$$dp_{n, m}$$$, and this solution works in $$$O(nm)$$$.
The second solution: observe that the sum of several first elements of $$$a$$$ is the sum of several first elements of $$$r$$$ and several first elements of $$$b$$$. So each prefix sum of $$$a$$$ (and the answer itself) is not greater than $$$\max_{i = 0}^{n} p_i + \max_{j = 0}^{m} p_j$$$. It's easy to show how to obtain exactly this answer: let $$$k$$$ be the value of $$$i$$$ such that $$$p_i$$$ is maximized, and $$$l$$$ be the value of $$$j$$$ such that $$$q_j$$$ is maximized. Let's place the first $$$k$$$ elements of $$$r$$$, then the first $$$l$$$ elements of $$$b$$$ (so the current sum is exactly $$$\max_{i = 0}^{n} p_i + \max_{j = 0}^{m} p_j$$$), and place all of the remaining elements in any possible order. So, the answer is $$$\max_{i = 0}^{n} p_i + \max_{j = 0}^{m} p_j$$$. This solution works in $$$O(n + m)$$$.