#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int maxr(int a, int b){
	if(a>b)
	return a;
	else
	return b;
}
int mini(int a, int b){
	if(a>b)
	return b;
	else
	return a;
}



int main(){
	
	char s1[18],s2[18],s3[18],s[3*18]="",ost1[18],ost2[18];
	gets(s1);
	gets(s2);
	gets(s3);
	
	int maxi = mini(mini(strlen(s1),strlen(s2)),strlen(s3));
	
	if(strcmp(s1,s2)==0 && strcmp(s2,s3)==0){
		strcat(s,s1);
		strcat(s,s1);
		strcat(s,s1);
		goto pffii;
	}
	else if(strcmp(s1,s2)==0){
		if(strcmp(s1,s3)<0){
			strcat(s,s3);
			strcat(s,s1);
			strcat(s,s1);
		}
		else{
			strcat(s,s1);
			strcat(s,s1);
			strcat(s,s3);
		}
	}
	else if(strcmp(s1,s3)==0){
		if(strcmp(s1,s2)<0){
			strcat(s,s2);
			strcat(s,s1);
			strcat(s,s1);
		}
		else{
			strcat(s,s1);
			strcat(s,s1);
			strcat(s,s2);
		}
	}
		
	int i,k;
		
	for(i=0;i<maxi;i++){
		if((s1[i]==s2[i] && s3[i]<=s1[i]) || (s1[i]==s3[i] && s2[i]<=s1[i]) || (s3[i]==s2[i] && s1[i]<=s3[i])){
			goto pff;
		}
		k=maxr(maxr(s1[i],s2[i]),s3[i]);
		if(k == s1[i]){
			strcpy(ost1,s2);
			strcpy(ost2,s3);
		strcat(s,s1);goto pffi;}
		else if(k == s2[i]){
			strcpy(ost1,s1);
			strcpy(ost2,s3);
			strcat(s,s2);goto pffi;
		}
		else{
			strcpy(ost1,s1);
			strcpy(ost2,s2);
			strcat(s,s3);goto pffi;
		}
	
		pff:;
	}	
	pffi:;
	
	maxi=mini(strlen(ost1),strlen(ost2));
	
	if(strcmp(ost1,ost2)==0){
		strcat(s,ost1);
		strcat(s,ost2);
		goto pffii;
	}
	for(i=0;i<maxi;i++){
		if(ost1[i]>ost2[i]){
			strcat(s,ost1);
			strcat(s,ost2);
			goto pffii;
		}
		if(ost1[i]<ost2[i]){
			strcat(s,ost2);
			strcat(s,ost1);
			goto pffii;
		}
	}		
	pffii:;	
	printf("%s",s);	
}