#include int main() { int N = 0; scanf("%d", &N); while (N--) { int maxArr[105][105]; int minArr[105][105]; int front[105]; int right[105]; int max = 0; int count = 0, sumFront = 0, sumRight = 0; scanf("%d", &count); for (int i = 0; i < count; i++) { for (int j = 0; j < count; j++) { minArr[i][j] = maxArr[i][j] = 0; } } for (int i = 0; i < count; i++) { int num = 0; scanf("%d", &num); front[i] = num; sumFront += num; for (int y = 0; y < count; y++) { maxArr[y][i] = num; } } for (int i = 0; i < count; i++) { int num = 0; scanf("%d", &num); right[i] = num; sumRight += num; int pos = count - i - 1; for (int x = 0; x < count; x++) { if (maxArr[pos][x] > num) maxArr[pos][x] = num; max += maxArr[pos][x]; } } for (int x = 0; x < count; x++) { int frontNum = front[x]; for (int y = 0; y < count; y++) { int rightNum = right[y]; if (frontNum <= rightNum) { minArr[x][y] = frontNum; break; } } } for (int y = 0; y < count; y++) { int rightNum = right[y]; int max = 0; for (int x = 0; x < count; x++) max = (minArr[x][y] > max ? minArr[x][y] : max); if (rightNum > max) { for (int x = 0; x < count; x++) { int frontNum = front[x]; if (frontNum >= rightNum) { minArr[x][y] = rightNum; break; } } } } int min = 0; for (int i = 0; i < count; i++) { for (int j = 0; j < count; j++) { min += minArr[i][j]; } } printf("Minimalni budova obsahuje %d kostek, maximalni %d kostek.\n", min, max); } return 0; }