import java.util.*;

class Stavitel {

public static int max(int [] ps) {
	int max = 0;
	for (int p : ps) {
		max = Math.max(p, max);
	}
	return max;
}

public static boolean hasNext(int val, int def,  int [] ps) {
	for (int i=def+1; i<ps.length; i++) {
		if (ps[i] == val) return true;
	}
	return false;
}

public static int find(int val, int def, int [] ps) {
	for (int i=def+1; i<ps.length; i++) {
		if (ps[i] == val) return i;
	}
	return def;
}

public static void solve(int [] w, int [] h) {
	int sz = w.length;

	int max = 0;
	for (int i=0; i<sz; i++) {
		for (int j=0; j<sz; j++) {	
			max += Math.min(w[i], h[j]);
		}
	}
	
	int min = 0;
	int level = Integer.MAX_VALUE;
	do {
		level = Math.max(max(w), max(h));

		int cw = -1;
		int ch = -1;

		while (hasNext(level, cw, w) || hasNext(level, ch, h)) {
			cw = find(level, cw, w);
			ch = find(level, ch, h);
			min += level;	
		}
		
		for (int i=0; i<sz; i++) {
			if (w[i]==level) w[i] = 0;
			if (h[i]==level) h[i] = 0;
		}		
		
	} while (level > 0);

	System.out.println("Minimalni budova obsahuje " + min + " kostek, maximalni " + max + " kostek.");
}

public static void main(String []args) {
	Scanner s = new Scanner(System.in);
	int c = s.nextInt();

	for (int i=0; i<c; i++) {
		int sz = s.nextInt();
		int [] w = new int[sz];
		int [] h = new int[sz];
		for (int j=0; j<sz; j++) {
			w[j] = s.nextInt();
		}
		for (int j=0; j<sz; j++) {
			h[j] = s.nextInt();
		}
		solve(w, h);
	}	

}


}
