#include <bits/stdc++.h>

using namespace std;

typedef long long int lli;

typedef vector<lli> vli;
typedef vector<int> vi;
typedef unordered_map<lli, vi> mlv;

#define PB push_back

vli res;
mlv arr;

vi getAllDigits(lli cur){
    vi all_digits;

    while(cur > 0){
       int digit = cur % 10;
       cur = (cur - digit) / 10;
       all_digits.PB(digit);
    }
    return all_digits;
}

mlv input(){
    mlv all;
    for(int i = 0; i < 3; i++){
        lli cur;
        scanf("%lld", &cur);
        res.PB(cur);
        vi all_digits = getAllDigits(cur);
        // digits of a number are backwards
        all[cur] = all_digits;
    }
    return all;
}


void output(vli vct){
    for(auto it = vct.begin(); it != vct.end(); it++){
        printf("%lld", *it);
    }
}


bool compare(lli a, lli b){
    // a and b are keys for arr which is a map
    // if a goes left then return true
    if(a == b){
        return false;
    }

    vi a_digits = arr[a];
    vi b_digits = arr[b];

    int j = b_digits.size() - 1;
    for(int i = a_digits.size() - 1; i >= 0; i--){
        if(j < 0){
            j = b_digits.size() - 1;
        }
        int left = a_digits[i];
        int right = b_digits[j];
        if(left > right){
            return true;
        } else if(right > left){
            return false;
        }

        j--;
    }
    return false;
}


void Solve(){
    arr = input();
    sort(res.begin(), res.end(), compare);
    output(res);
}

int main()
{
    Solve();
    return 0;
}