/*
    AOJ Volume0 0001

        List of Top 3 Hills
        There is a data which provides heights (in meter) of mountains. The data is only for ten mountains.
        Write a program which prints heights of the top three mountains in descending order.


        Input
            Height of mountain 1
            Height of mountain 2
            Height of mountain 3
             .
             .
            Height of mountain 10



        Constraints
            0 ≤ height of mountain (integer) ≤ 10,000



        Output
            Height of the 1st mountain
            Height of the 2nd mountain
            Height of the 3rd mountain



        Sample Input 1
            1819
            2003
            876
            2840
            1723
            1673
            3776
            2848
            1592
            922

        Output for the Sample Input 1
            3776
            2848
            2840

        Sample Input 2
            100
            200
            300
            400
            500
            600
            700
            800
            900
            900
    
        Output for the Sample Input 2
            900
            900
            800
    
*/

#include <iostream>


namespace aoj
{
    class bigger_int_storage
    {
    private:
        int _size;
        int* _buffer;

    public:
        bigger_int_storage(int size);
        ~bigger_int_storage();
        void push(int value);
        int operator[](int idx)const;
    };
}



int main(void)
{
    aoj::bigger_int_storage bs(3);

    for(int i=0; i<10; ++i)
    {
        int input;
        std::cin >> input;
        bs.push(input);

        /*

        // confirming : 
        std::cout << std::endl;
        std::cout << "[current] -----" << std::endl;
        std::cout << bs[0] << std::endl;
        std::cout << bs[1] << std::endl;
        std::cout << bs[2] << std::endl;
        */
    }

    std::cout << bs[0] << std::endl;
    std::cout << bs[1] << std::endl;
    std::cout << bs[2] << std::endl;

    return 0;
}




aoj::bigger_int_storage::bigger_int_storage(int size)
{
    _size = size;
    _buffer = new int[_size];
    for(int i=0; i<_size; ++i)
        _buffer[i] = -2147483648;
}

aoj::bigger_int_storage::~bigger_int_storage()
{
    delete[] _buffer;
}

void aoj::bigger_int_storage::push(int value)
{
    for(int i=0; i<_size; ++i)
    {
        if(value > _buffer[i])
        {
            for(int j=_size-1; j>i; --j)
                _buffer[j] = _buffer[j-1];

            _buffer[i] = value;
            break;
        }
    }
}

int aoj::bigger_int_storage::operator[](int idx)const
{
    return _buffer[idx];
}


