#define _CRT_SECURE_NO_WARNINGS
#define MAX(A, B) A > B ? A : B
#include <iostream>
#include <memory.h>
#include <algorithm>
using namespace std;
int N, M;
int A[3001];
int B[101];
int cache[6][4][4][2];
int snack(int a, int b1, int b2, bool skip) {
int& rt = cache[a][b1][b2][skip];
if (rt != -1) return rt;
cout << a << ' ' << b1 << ' ' << b2 << ' ' << skip << '\n';
rt = 0;
if (skip) {
if (a < N) rt = snack(a + 1, b1, b2, 0);
if (b1 <= b2) {
rt = MAX(rt, snack(a, b1 + 1, b2, 0));
rt = MAX(rt, snack(a, b1, b2 - 1, 0));
}
}
else {
if (a < N) rt = snack(a + 1, b1, b2, 1) + A[a];
if (b1 <= b2) {
rt = MAX(rt, snack(a, b1 + 1, b2, 1)) + B[b1];
rt = MAX(rt, snack(a, b1, b2 - 1, 1)) + B[b2];
}
}
return rt;
}
int main(int argc, char** argv) {
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
int test_case;
int T;
cin >> T;
for (test_case = 1; test_case <= T; ++test_case) {
A[0] = B[0] = 0;
cin >> N;
for (int i = 1; i <= N; ++i)
cin >> A[i];
cin >> M;
for (int i = 1; i <= M; ++i)
cin >> B[i];
sort(&B[1], &B[M]);
memset(cache, -1, sizeof(cache));
int a = MAX(snack(1, 1, M, 0), snack(1, 1, M, 1));
cout << '#' << test_case << ' ' << a << '\n';
}
return 0;
}
I2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUwojZGVmaW5lIE1BWChBLCBCKSBBID4gQiA/IEEgOiBCCgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxtZW1vcnkuaD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgTiwgTTsKaW50IEFbMzAwMV07CmludCBCWzEwMV07CmludCBjYWNoZVs2XVs0XVs0XVsyXTsKCmludCBzbmFjayhpbnQgYSwgaW50IGIxLCBpbnQgYjIsIGJvb2wgc2tpcCkgewoKCWludCYgcnQgPSBjYWNoZVthXVtiMV1bYjJdW3NraXBdOwoJaWYgKHJ0ICE9IC0xKSByZXR1cm4gcnQ7CgoJY291dCA8PCBhIDw8ICcgJyA8PCBiMSA8PCAnICcgPDwgYjIgPDwgJyAnIDw8IHNraXAgPDwgJ1xuJzsKCglydCA9IDA7CglpZiAoc2tpcCkgewoJCWlmIChhIDwgTikgcnQgPSBzbmFjayhhICsgMSwgYjEsIGIyLCAwKTsKCQlpZiAoYjEgPD0gYjIpIHsKCQkJcnQgPSBNQVgocnQsIHNuYWNrKGEsIGIxICsgMSwgYjIsIDApKTsKCQkJcnQgPSBNQVgocnQsIHNuYWNrKGEsIGIxLCBiMiAtIDEsIDApKTsKCQl9Cgl9CgkKCWVsc2UgewoJCWlmIChhIDwgTikgcnQgPSBzbmFjayhhICsgMSwgYjEsIGIyLCAxKSArIEFbYV07CgkJaWYgKGIxIDw9IGIyKSB7CgkJCXJ0ID0gTUFYKHJ0LCBzbmFjayhhLCBiMSArIDEsIGIyLCAxKSkgKyBCW2IxXTsKCQkJcnQgPSBNQVgocnQsIHNuYWNrKGEsIGIxLCBiMiAtIDEsIDEpKSArIEJbYjJdOwoJCX0KCX0KCXJldHVybiBydDsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CgoJY2luLnRpZShOVUxMKTsKCWNvdXQudGllKE5VTEwpOwoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgoJaW50IHRlc3RfY2FzZTsKCWludCBUOwoKCWNpbiA+PiBUOwoKCWZvciAodGVzdF9jYXNlID0gMTsgdGVzdF9jYXNlIDw9IFQ7ICsrdGVzdF9jYXNlKSB7CgoJCUFbMF0gPSBCWzBdID0gMDsKCgkJY2luID4+IE47CgkJZm9yIChpbnQgaSA9IDE7IGkgPD0gTjsgKytpKQoJCQljaW4gPj4gQVtpXTsKCgkJY2luID4+IE07CgkJZm9yIChpbnQgaSA9IDE7IGkgPD0gTTsgKytpKQoJCQljaW4gPj4gQltpXTsKCgkJc29ydCgmQlsxXSwgJkJbTV0pOwoKCQltZW1zZXQoY2FjaGUsIC0xLCBzaXplb2YoY2FjaGUpKTsKCgkJaW50IGEgPSBNQVgoc25hY2soMSwgMSwgTSwgMCksIHNuYWNrKDEsIDEsIE0sIDEpKTsKCgkJY291dCA8PCAnIycgPDwgdGVzdF9jYXNlIDw8ICcgJyA8PCBhIDw8ICdcbic7Cgl9CgoJcmV0dXJuIDA7Cn0=