#include <iostream>
#include <cmath>
using namespace std;
int main(void){
    int mount[10]={}, i, max1=0, max2=0, max3=0;
     
    for(i=0; i<10; i++){
        cin >> mount[i];
        if(max3 < mount[i]){
            if(max2 < mount[i]){
                if(max1 < mount[i]){
                    max3 = max2;
                    max2 = max1;
                    max1 = mount[i];
                }
                else{
                    max3 = max2;
                    max2 = mount[i];
                }
            }
            else{
                max3 = mount[i];
            }
        }
    }
     
    cout << max1 << endl;
    cout << max2 << endl;
    cout << max3 << endl;
    return 0;
}

/*
　max1…１番高い山、max2…２番目に高い山、max3…３番目に高い山　とします。
　max1より高い山が現れたら、max1に設定し、max2、max3は順送りします。
　max1より低く、max2より高い山が現れたら、max2に設定し、max3は順送りします。
　max2より低く、max3より高い山が現れたら、max3に設定します。
*/
