import java.util.Scanner;

public class Main {
    private static class Matrix {
        private int width;
        private int height;

        public Matrix(int width, int height) {
            this.width = width;
            this.height = height;
        }
    }

    private static long multiple(long[][] dp, Matrix[] sizes, int[][] bestCut, int l, int r ) {
        if (dp[l][r] == Long.MAX_VALUE) {
            for (int i = l; i < r; i++) {
            long cur = multiple(dp, sizes, bestCut, l, i) + multiple(dp, sizes, bestCut, i + 1, r) + sizes[l].width * sizes[i].height * sizes[r].height;
                if (cur < dp[l][r]) {
                    dp[l][r] = cur;
                    bestCut[l][r] = i;
                }
            }
        }
        return dp[l][r];
    }

    private static void print(int l, int r, int[][] bestCut) {
        if (l == r) {
            System.out.print("A" + (l + 1));
        }
        else {
            System.out.print("(");
            print(l, bestCut[l][r], bestCut);
            System.out.print(" x ");
            print(bestCut[l][r] + 1, r, bestCut);
            System.out.print(")");
        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        for (int c = 1, n = sc.nextInt(); n != 0; n = sc.nextInt(), c++) {
            long[][] dp = new long[n][n];
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    dp[i][j] = Long.MAX_VALUE;
                }
            }
            Matrix[] sizes = new Matrix[n];
            int[][] bestCut = new int[n][n];
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    bestCut[i][j] = Integer.MAX_VALUE;
                }
            }
            for (int i = 0; i < n; i++) {
                int width = sc.nextInt();
                int height = sc.nextInt();
                sizes[i] = new Matrix(width, height);
            }
            for (int i = 0; i < n; i++) {
                dp[i][i] = 0;
            }
            multiple(dp, sizes, bestCut, 0, n-1);
            System.out.print("Case " + c + ": ");
            print(0, n - 1, bestCut);
            System.out.println();
        }
    }
}