import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import static java.lang.Integer.max;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Stavitel {

    static StringTokenizer st = new StringTokenizer("");
    static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    //static BufferedReader input;

    static String nextToken() throws Exception {
        while (!st.hasMoreTokens()) {
            st = new StringTokenizer(input.readLine());
        }
        return st.nextToken();
    }

    static int nextInt() throws Exception {
        return Integer.parseInt(nextToken());
    }

    public static void main(String[] args) throws IOException, Exception {
        String line;

        //input = new BufferedReader(new InputStreamReader(new FileInputStream("test.in")));
        while ((line = input.readLine()) != null) {
            st = new StringTokenizer(line);

            int N = nextInt();

            for (int x = 0; x < N; x++) {
                int K = Integer.parseInt(input.readLine());

                int front[] = new int[K];
                int side[] = new int[K];

                line = input.readLine();
                st = new StringTokenizer(line);

                for (int y = 0; y < K; y++) {
                    front[y] = nextInt();
                }

                int sumside = 0;
                for (int y = 0; y < K; y++) {
                    side[y] = nextInt();
                    sumside += side[y];
                }

                Arrays.sort(front);
                Arrays.sort(side);

                // get max
                int sum = 0;
                int sumfront = 0;
                for (int i = 0; i < K; i++) {
                    if (front[i] == 0) continue;
                    
                    sumfront += front[i];

                    for (int j = 0; j < K; j++) {
                        // donasobime do konce
                        if (side[j] == front[i]) {
                            sum += side[j] * (K - j);
                            break;
                        } else {
                            sum += side[j];
                        }
                    }
                }
                //System.out.println(sum);
                
                int L = max(sumfront, sumside);
                int M = sum;
                
                
                // get min
                /*sum = 0;
                for (int i = K - 1; i >= 0; i--) {
                    
                }*/
                
                System.out.println("Minimalni budova obsahuje "+L+" kostek, maximalni "+M+" kostek.");

                
            }

            //System.out.println();
        }

    }

}
