#include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i, N) for(int (i)=0; (i)<(N); (i)++) #define ll long long #define mp make_pair #define pb push_back int A1[111], A2[111]; int bd[111][111]; bool cmp(int a, int b) { return a>b; } int main() { int N; scanf("%d", &N); REP(testc, N) { memset(A1, 0, sizeof(A1)); memset(A2, 0, sizeof(A2)); memset(bd, 0, sizeof(bd)); int K; scanf("%d", &K); REP(i, K) scanf("%d", &A1[i]); REP(i, K) scanf("%d", &A2[i]); sort(A1, A1+K,cmp); sort(A2, A2+K,cmp); int maximalni = 0; REP(i, K) REP(j, K) { maximalni += min(A1[i], A2[j]); } int k=0, l=0; while(k < K || l < K) { if(A1[k] == A2[l]) { bd[k][l] = A1[k]; k++; l++; } else if(A1[k] > A2[l]) { bd[k][0] = A1[k]; k++; } else { bd[0][l] = A2[l]; l++; } } int minimalni = 0; REP(i, K) { REP(j, K) { minimalni += bd[i][j]; } } printf("Minimalni budova obsahuje %d kostek, maximalni %d kostek.\n", minimalni, maximalni); } return 0; }