#include <iostream>
using namespace std;
int n, a[10], score = 0;
int findLeftNeighbour(int pos) {
if (pos < 0) return -1;
for (int i = pos - 1; i >= 0; --i)
if (a[i] != 0) return i;
return -1;
}
int findRightNeighbour(int pos) {
if (pos >= n) return -1;
for (int i = pos + 1; i < n; ++i)
if (a[i] != 0) return i;
return -1;
}
void solve(int nBurst, int curScore) {
if (nBurst == n) {
if (score < curScore) score = curScore;
return;
}
for (int i = 0; i < n; ++i) {
if (a[i] != 0) { // if not already burst (a[i] == 0 => balloon burst at a[i])
// burst current balloon and calc score
int left = findLeftNeighbour(i);
int right = findRightNeighbour(i);
int tempScore;
if (left != -1 && right != -1) // left, right both are present
tempScore = a[left] * a[right];
else if (left != -1 && right == -1) // left is present
tempScore = a[left];
else if (right != -1 && left == -1) // right is present
tempScore = a[right];
else if (left == -1 && right == -1) // neither left nor right is present
tempScore = a[i];
int tempCurVal = a[i];
// mark as burst
a[i] = 0; // (as a[i] > 0)
// solve further
solve(nBurst + 1, curScore + tempScore);
// backtrack
a[i] = tempCurVal;
}
}
}
int main() {
int t;
cin >> t;
while (t--) {
cin >> n;
for (int i = 0; i < n; ++i) cin >> a[i];
solve(0, 0);
cout << score << endl;
}
return 0;
}
/*
sample testcase:
5
4
1 2 3 4
5
3 10 1 2 5
7
12 48 28 21 67 75 85
8
245 108 162 400 274 358 366 166
10
866 919 840 944 761 895 701 912 848 799
output:
20
100
16057
561630
6455522
*/
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG4sIGFbMTBdLCBzY29yZSA9IDA7CgppbnQgZmluZExlZnROZWlnaGJvdXIoaW50IHBvcykgewogICAgaWYgKHBvcyA8IDApIHJldHVybiAtMTsKICAgIGZvciAoaW50IGkgPSBwb3MgLSAxOyBpID49IDA7IC0taSkKICAgICAgICBpZiAoYVtpXSAhPSAwKSByZXR1cm4gaTsKICAgIHJldHVybiAtMTsKfQoKaW50IGZpbmRSaWdodE5laWdoYm91cihpbnQgcG9zKSB7CiAgICBpZiAocG9zID49IG4pIHJldHVybiAtMTsKICAgIGZvciAoaW50IGkgPSBwb3MgKyAxOyBpIDwgbjsgKytpKQogICAgICAgIGlmIChhW2ldICE9IDApIHJldHVybiBpOwogICAgcmV0dXJuIC0xOwp9Cgp2b2lkIHNvbHZlKGludCBuQnVyc3QsIGludCBjdXJTY29yZSkgewogICAgaWYgKG5CdXJzdCA9PSBuKSB7CiAgICAgICAgaWYgKHNjb3JlIDwgY3VyU2NvcmUpIHNjb3JlID0gY3VyU2NvcmU7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgaWYgKGFbaV0gIT0gMCkgeyAgLy8gaWYgbm90IGFscmVhZHkgYnVyc3QgKGFbaV0gPT0gMCA9PiBiYWxsb29uIGJ1cnN0IGF0IGFbaV0pCiAgICAgICAgICAgIC8vIGJ1cnN0IGN1cnJlbnQgYmFsbG9vbiBhbmQgY2FsYyBzY29yZQogICAgICAgICAgICBpbnQgbGVmdCA9IGZpbmRMZWZ0TmVpZ2hib3VyKGkpOwogICAgICAgICAgICBpbnQgcmlnaHQgPSBmaW5kUmlnaHROZWlnaGJvdXIoaSk7CiAgICAgICAgICAgIGludCB0ZW1wU2NvcmU7CiAgICAgICAgICAgIGlmIChsZWZ0ICE9IC0xICYmIHJpZ2h0ICE9IC0xKSAgLy8gbGVmdCwgcmlnaHQgYm90aCBhcmUgcHJlc2VudAogICAgICAgICAgICAgICAgdGVtcFNjb3JlID0gYVtsZWZ0XSAqIGFbcmlnaHRdOwogICAgICAgICAgICBlbHNlIGlmIChsZWZ0ICE9IC0xICYmIHJpZ2h0ID09IC0xKSAgLy8gbGVmdCBpcyBwcmVzZW50CiAgICAgICAgICAgICAgICB0ZW1wU2NvcmUgPSBhW2xlZnRdOwogICAgICAgICAgICBlbHNlIGlmIChyaWdodCAhPSAtMSAmJiBsZWZ0ID09IC0xKSAgLy8gcmlnaHQgaXMgcHJlc2VudAogICAgICAgICAgICAgICAgdGVtcFNjb3JlID0gYVtyaWdodF07CiAgICAgICAgICAgIGVsc2UgaWYgKGxlZnQgPT0gLTEgJiYgcmlnaHQgPT0gLTEpICAvLyBuZWl0aGVyIGxlZnQgbm9yIHJpZ2h0IGlzIHByZXNlbnQKICAgICAgICAgICAgICAgIHRlbXBTY29yZSA9IGFbaV07CgogICAgICAgICAgICBpbnQgdGVtcEN1clZhbCA9IGFbaV07CiAgICAgICAgICAgIC8vIG1hcmsgYXMgYnVyc3QKICAgICAgICAgICAgYVtpXSA9IDA7ICAvLyAoYXMgYVtpXSA+IDApCiAgICAgICAgICAgIC8vIHNvbHZlIGZ1cnRoZXIKICAgICAgICAgICAgc29sdmUobkJ1cnN0ICsgMSwgY3VyU2NvcmUgKyB0ZW1wU2NvcmUpOwogICAgICAgICAgICAvLyBiYWNrdHJhY2sKICAgICAgICAgICAgYVtpXSA9IHRlbXBDdXJWYWw7CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgY2luID4+IG47CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIGNpbiA+PiBhW2ldOwoKICAgICAgICBzb2x2ZSgwLCAwKTsKICAgICAgICBjb3V0IDw8IHNjb3JlIDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCi8qCgpzYW1wbGUgdGVzdGNhc2U6CjUKNAoxIDIgMyA0CjUKMyAxMCAxIDIgNQo3CjEyIDQ4IDI4IDIxIDY3IDc1IDg1CjgKMjQ1IDEwOCAxNjIgNDAwIDI3NCAzNTggMzY2IDE2NgoxMAo4NjYgOTE5IDg0MCA5NDQgNzYxIDg5NSA3MDEgOTEyIDg0OCA3OTkKCm91dHB1dDoKMjAKMTAwCjE2MDU3CjU2MTYzMAo2NDU1NTIyCgoqLw==
NQo0CjEgMiAzIDQKNQozIDEwIDEgMiA1CjcKMTIgNDggMjggMjEgNjcgNzUgODUKOAoyNDUgMTA4IDE2MiA0MDAgMjc0IDM1OCAzNjYgMTY2CjEwCjg2NiA5MTkgODQwIDk0NCA3NjEgODk1IDcwMSA5MTIgODQ4IDc5OQ==
5
4
1 2 3 4
5
3 10 1 2 5
7
12 48 28 21 67 75 85
8
245 108 162 400 274 358 366 166
10
866 919 840 944 761 895 701 912 848 799