#include <bits/stdc++.h>
using namespace std;
int na,nb,nc;
void niz(long long a,int x[],int &n){
	n=0;
	while(a>0){
		x[n++]=a%10;
		a/=10;
	}
	for(int i=0;i<n/2;i++)
		swap(x[i],x[n-1-i]);
}
void spoj(int x[],int n,int y[],int m,int z[],int k,int t[]){
	if(n==0)
		n=na;
	else
		if(n==1)
			n=nb;
		else
			n=nc;
	if(m==0)
		m=na;
	else
		if(m==1)
			m=nb;
		else
			m=nc;
	if(k==0)
		k=na;
	else
		if(k==1)
			k=nb;
		else
			k=nc;
	for(int i=0;i<n;i++)
		t[i]=x[i];
	for(int i=n;i<n+m;i++)
		t[i]=y[i-n];
	for(int i=n+m;i<n+m+k;i++)
		t[i]=z[i-n-m];
}
bool veci(int x[],int y[]){
	for(int i=0;i<na+nb+nc;i++)
		if(x[i]>y[i])
			return 1;
		else
			if(y[i]>x[i])
				return 0;
	return 0;
}
int main(){
	int x[200],y[200],z[200],t[3][200];
	long long a,b,c;
	cin>>a>>b>>c;
	niz(a,x,na);niz(b,y,nb);niz(c,z,nc);
	for(int i=0;i<na;i++)t[0][i]=x[i];
	for(int i=0;i<nb;i++)t[1][i]=y[i];
	for(int i=0;i<nc;i++)t[2][i]=z[i];
	int mah[100],u[100];
	spoj(x,na,y,nb,z,nc,mah);
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++)
			for(int k=0;k<3;k++){
				if(i!=j&&j!=k&&k!=i){
					spoj(t[i],i,t[j],j,t[k],k,u);
					if(veci(u,mah)){
						for(int i=0;i<na+nb+nc;i++)
							mah[i]=u[i];
					}
				}
			}
	for(int i=0;i<na+nb+nc;i++)
		cout<<mah[i];
//	cout<<na+nb+nc;
	return 0;
}