#include <stdio.h>
#include <string.h>
int d[4];
long long br[4];
char a[3][100];
char sol[300];
int duzina(long long broj)
{
	int l=1;
	while(broj>=10)
	{
		broj/=10;
		l++;	
	}	
	return l;
}
void rastavi(long long broj,int duzina,int poz)
{
	a[poz][duzina]='\0';
	int n=duzina-1;
	while(n>=0)
	{
		
		a[poz][n]=(br[poz]%10)+'0';
		br[poz]/=10;
		n--;
	}
}
int min(int x,int y)
{
	if(x>y)
	return y;
	else return x;
}
int max(int x,int y)
{
	if(x<y)
	return y;
	else return x;
}
int minpoz(int x,int y)
{
	if(x>y)
	return 2;
	else return 1;
}
int bolji(char x[] ,char y[],int poz1,int poz2)
{
	int k=strlen(x);
	int l=strlen(y);
	int i,n=max(k,l);
	if(minpoz(k,l)==1)
	{
		for(i=0;i<n;i++)
		{
			if(x[i%k]>y[i])
			{
				
				return poz1;
				//sol=1; break;
			}
			else if(x[i%k]<y[i])
			{
				return poz2;
				//sol=2; break;
			}
		}
	}
	else
	{
		for(i=0;i<n;i++)
		{
			if(x[i]>y[i%l])
			{								
				return poz1;
			//	sol=1; break;
			}
			else if(x[i]<y[i%l])
			{
				return poz2;
				//sol=2; break;
			}
		}
	}
	return poz1;
}
int losiji(char x[] ,char y[],int poz1,int poz2)
{
	int r=bolji(a[poz1],a[poz2],poz1,poz2);
	if(r==poz1)
	return poz2;
	else return poz1;
}
main()
{
	int i,j,red[3],uk,c=0,poz[3],prvi=0,drugi=1,treci=2;
	long long max=0;
	int tmp,tmp2;
	for(i=0;i<3;i++)
	{
		red[i]=i;
		scanf("%lld",&br[i]);
		d[i]=duzina(br[i]);
		rastavi(br[i],d[i],i);
	}
	for(i=0;i<3;i++)
	{
		prvi=bolji(a[prvi],a[i],prvi,i);
	}
	for(i=0;i<3;i++)
	{
		treci=losiji(a[treci],a[i],treci,i);
	}
	for(i=0;i<3;i++)
	{
		if(i!=prvi && i!=treci)
		drugi=i;
	}
		for(j=0;j<d[prvi];j++)
		{
			sol[c]=a[prvi][j];
			c++;
		}
			for(j=0;j<d[drugi];j++)
		{
			sol[c]=a[drugi][j];
			c++;
		}
			for(j=0;j<d[treci];j++)
		{
			sol[c]=a[treci][j];
			c++;
		}
		sol[c]='\0';
	printf("%s",sol);
}