import std.stdio, std.algorithm, std.range, std.random, std.array, std.string, std.conv;

int[] merge(int[] a, int [] b) {
    auto xs = new int[a.length + b.length];
    int i, j;
    foreach (ref x; xs) {
        x = i >= a.length ? b[j++] :
            j >= b.length ? a[i++] :
            a[i] < b[j] ? a[i++] : b[j++];
    }
    return xs;
}
int[] merge_sort(int[] a) {
    if (a.length == 1) return a;
    auto xs = a[0 .. $ / 2],
         ys = a[$ / 2 .. $];
    return merge(merge_sort(xs), merge_sort(ys));
}

void main() {
    auto xs = readln.chomp.split(" ").map!(to!int).array;
    writefln("%(%s %)", xs.merge_sort.reverse);
}