#include<cstdio>
#include<algorithm>
int can[3][3];
int list[3];
#define Brown 0
#define Clear 2
#define Green 1

int index_change(int x)
{
	if(x==1)return 2;
	if(x==2)return 1;
	return 0;
}
int All;
int GetMoveStep(int *ptr)
{
	return All	-can[0][index_change(ptr[0])]
				-can[1][index_change(ptr[1])]
				-can[2][index_change(ptr[2])];
}

int main()
{
	int ans,M,out[3];
	while(~scanf("%d%d%d%d%d%d%d%d%d",	&can[0][0],&can[0][1],&can[0][2],
										&can[1][0],&can[1][1],&can[1][2],
										&can[2][0],&can[2][1],&can[2][2]))
	{
		All=0;
		for(int i=0;i<3;++i)
			for(int j=0;j<3;++j)
				All+=can[i][j];
		list[0]=0;
		list[1]=1;
		list[2]=2;
		ans=0x7fffffff;
		do{
			M=GetMoveStep(list);
			if(ans>M)
			{
				ans=M;
				out[0]=list[0];
				out[1]=list[1];
				out[2]=list[2];
			}
		}while(std::next_permutation(list,list+3));
		for(int i=0;i<3;++i)
		{
			if(out[i]==Brown)putchar('B');
			else if(out[i]==Clear)putchar('G');
			else putchar('C');
		}
		printf(" %d\n",ans);
	}
}