#include <iostream>
#include <vector>
using namespace std;
void insertionSort(vector<int> &inVec)
{
int i, j, key, inVecSize = inVec.size();
for (j = 1; j < inVecSize; j++)
{
key = inVec[j];
for (i = j - 1; (i >= 0) && (inVec[i] < key); i--)
{
inVec[i + 1] = inVec[i];
}
inVec[i + 1] = key;
}
return;
}
vector<int> fillPeople(int numPeople)
{
vector<int> ret;
ret.reserve(numPeople);
while (numPeople--)
{
int curPeopleScore;
scanf("%d", &curPeopleScore);
ret.push_back(curPeopleScore);
}
return ret;
}
int sumHotnessScore(int numPeople, vector<int> &men, vector<int> &women)
{
int sum = 0;
for (int i = 0; i < numPeople; i++)
{
sum += men[i] * women[i];
}
return sum;
}
int main()
{
int numCases;
scanf("%d", &numCases);
while (numCases-- > 0)
{
int numPeople;
scanf("%d", &numPeople);
vector<int> men = fillPeople(numPeople);
vector<int> women = fillPeople(numPeople);
insertionSort(men);
insertionSort(women);
int sum = sumHotnessScore(numPeople, men, women);
printf("%d", sum);
printf("\r\n");
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgaW5zZXJ0aW9uU29ydCh2ZWN0b3I8aW50PiAmaW5WZWMpCnsKICAgIGludCBpLCBqLCBrZXksIGluVmVjU2l6ZSA9IGluVmVjLnNpemUoKTsKCWZvciAoaiA9IDE7IGogPCBpblZlY1NpemU7IGorKykKCXsKCQlrZXkgPSBpblZlY1tqXTsKCQlmb3IgKGkgPSBqIC0gMTsgKGkgPj0gMCkgJiYgKGluVmVjW2ldIDwga2V5KTsgaS0tKQoJCXsKCQkJaW5WZWNbaSArIDFdID0gaW5WZWNbaV07CgkJfQoJCWluVmVjW2kgKyAxXSA9IGtleTsKCX0KCXJldHVybjsKfQoKdmVjdG9yPGludD4gZmlsbFBlb3BsZShpbnQgbnVtUGVvcGxlKQp7Cgl2ZWN0b3I8aW50PiByZXQ7CglyZXQucmVzZXJ2ZShudW1QZW9wbGUpOwoJd2hpbGUgKG51bVBlb3BsZS0tKQoJewoJCWludCBjdXJQZW9wbGVTY29yZTsKCQlzY2FuZigiJWQiLCAmY3VyUGVvcGxlU2NvcmUpOwoJCXJldC5wdXNoX2JhY2soY3VyUGVvcGxlU2NvcmUpOwoJfQoJcmV0dXJuIHJldDsKfQoKaW50IHN1bUhvdG5lc3NTY29yZShpbnQgbnVtUGVvcGxlLCB2ZWN0b3I8aW50PiAmbWVuLCB2ZWN0b3I8aW50PiAmd29tZW4pCnsKCWludCBzdW0gPSAwOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QZW9wbGU7IGkrKykKCXsKCQlzdW0gKz0gbWVuW2ldICogd29tZW5baV07Cgl9CglyZXR1cm4gc3VtOwp9CgppbnQgbWFpbigpCnsKCWludCBudW1DYXNlczsKCXNjYW5mKCIlZCIsICZudW1DYXNlcyk7Cgl3aGlsZSAobnVtQ2FzZXMtLSA+IDApCgl7CgkJaW50IG51bVBlb3BsZTsKCQlzY2FuZigiJWQiLCAmbnVtUGVvcGxlKTsKCQl2ZWN0b3I8aW50PiBtZW4gPSBmaWxsUGVvcGxlKG51bVBlb3BsZSk7CgkJdmVjdG9yPGludD4gd29tZW4gPSBmaWxsUGVvcGxlKG51bVBlb3BsZSk7CgkJaW5zZXJ0aW9uU29ydChtZW4pOwoJCWluc2VydGlvblNvcnQod29tZW4pOwoJCWludCBzdW0gPSBzdW1Ib3RuZXNzU2NvcmUobnVtUGVvcGxlLCBtZW4sIHdvbWVuKTsKCQlwcmludGYoIiVkIiwgc3VtKTsKCQlwcmludGYoIlxyXG4iKTsKCX0KCXJldHVybiAwOwp9Cgo=