/*
Matrix Chain Multiplication
@author : md.moniruzzaman
*/
#include<stdio.h>
#define maxn 50
#define INF 9999999

int m[maxn][maxn];
int s[maxn][maxn];
int p[maxn];

int totalm;

void Matrix();
void Print(int n, int m);

void main() {
	int r, c, n;
	//freopen("h.txt","r",stdin);
	scanf("%d",&totalm);
	n = 0;
	while(n<totalm){
		scanf("%d%d",&r,&c);
		p[n] = r;
		n++;
	}	
	p[n] = c;
	printf("Minimum Cost: %d\n",Matrix());
	Print(1,totalm);
	printf("\n");
}

int Matrix() {
	int i, j, k, L, q;
	for(i = 1; i<= totalm; i++) 
		m[i][i] = 0;
	for(L = 2; L<= totalm; L++) {
		for(i = 1; i<= totalm- L + 1; i++) {
			j = i + L - 1;
			m[i][j] = INF;
			for(k = i; k<= j-1; k++) {
				q = m[i][k]+ m[k+1][j] + p[i-1]*p[k]*p[j];
				if(q<m[i][j]){
					m[i][j] = q;
					s[i][j] = k;
				}
			}
		}
	}
	return m[1][totalm];
}

void Print(int i, int j) {
	if(i == j) 
		printf("%c",i-1+'A');
	else {
		printf("(");
		Print(i,s[i][j]);
		Print(s[i][j]+1,j);
		printf(")");
	}
}