#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[3003][103][103][2];
int snack(int a, int b1, int b2, bool skip) {
int& rt = cache[a][b1][b2][skip];
if (rt != -1) return rt;
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+CiNpbmNsdWRlIDxtZW1vcnkuaD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgTiwgTTsKaW50IEFbMzAwMV07CmludCBCWzEwMV07CmludCBjYWNoZVszMDAzXVsxMDNdWzEwM11bMl07CgppbnQgc25hY2soaW50IGEsIGludCBiMSwgaW50IGIyLCBib29sIHNraXApIHsKCglpbnQmIHJ0ID0gY2FjaGVbYV1bYjFdW2IyXVtza2lwXTsKCWlmIChydCAhPSAtMSkgcmV0dXJuIHJ0OwoKCXJ0ID0gMDsKCWlmIChza2lwKSB7CgkJaWYgKGEgPCBOKSBydCA9IHNuYWNrKGEgKyAxLCBiMSwgYjIsIDApOwoJCWlmIChiMSA8PSBiMikgewoJCQlydCA9IE1BWChydCwgc25hY2soYSwgYjEgKyAxLCBiMiwgMCkpOwoJCQlydCA9IE1BWChydCwgc25hY2soYSwgYjEsIGIyIC0gMSwgMCkpOwoJCX0KCX0KCQoJZWxzZSB7CgkJaWYgKGEgPCBOKSBydCA9IHNuYWNrKGEgKyAxLCBiMSwgYjIsIDEpICsgQVthXTsKCQlpZiAoYjEgPD0gYjIpIHsKCQkJcnQgPSBNQVgocnQsIHNuYWNrKGEsIGIxICsgMSwgYjIsIDEpKSArIEJbYjFdOwoJCQlydCA9IE1BWChydCwgc25hY2soYSwgYjEsIGIyIC0gMSwgMSkpICsgQltiMl07CgkJfQoJfQoJcmV0dXJuIHJ0Owp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKCgljaW4udGllKE5VTEwpOwoJY291dC50aWUoTlVMTCk7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCglpbnQgdGVzdF9jYXNlOwoJaW50IFQ7CgoJY2luID4+IFQ7CgoJZm9yICh0ZXN0X2Nhc2UgPSAxOyB0ZXN0X2Nhc2UgPD0gVDsgKyt0ZXN0X2Nhc2UpIHsKCgkJQVswXSA9IEJbMF0gPSAwOwoKCQljaW4gPj4gTjsKCQlmb3IgKGludCBpID0gMTsgaSA8PSBOOyArK2kpCgkJCWNpbiA+PiBBW2ldOwoKCQljaW4gPj4gTTsKCQlmb3IgKGludCBpID0gMTsgaSA8PSBNOyArK2kpCgkJCWNpbiA+PiBCW2ldOwoKCQlzb3J0KCZCWzFdLCAmQltNXSk7CgoJCW1lbXNldChjYWNoZSwgLTEsIHNpemVvZihjYWNoZSkpOwoKCQlpbnQgYSA9IE1BWChzbmFjaygxLCAxLCBNLCAwKSwgc25hY2soMSwgMSwgTSwgMSkpOwoKCQljb3V0IDw8ICcjJyA8PCB0ZXN0X2Nhc2UgPDwgJyAnIDw8IGEgPDwgJ1xuJzsKCX0KCglyZXR1cm4gMDsKfQ==