Go: package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strconv"
)

var rdr = bufio.NewReaderSize(os.Stdin, 1000000)

func readLine() string {
	buf := make([]byte, 0, 1000000)
	for {
		l, p, e := rdr.ReadLine()
		if e != nil {
			panic(e)
		}
		buf = append(buf, l...)
		if !p {
			break
		}
	}
	return string(buf)
}

func toInt(str string) int {
	n, _ := strconv.Atoi(str)
	return n
}

func main() {
	lst := make([]int, 0)
	for i := 0; i < 10; i++ {
		lst = append(lst, toInt(readLine()))
	}
	sort.Ints(lst)
	for i := 9; i > 6; i-- {
		fmt.Println(lst[i])
	}
}

C++: #include <iostream>
#include <vector>
#include <algorithm>
using namespace std;


int main() {
    vector<int> v(10);

    for (int i = 0; i < 10; i++) {
        cin >> v[i];
    }

    sort(v.begin(), v.end(), [](int a, int b){return a > b;});

    for (int i = 0; i < 3; i++) {
        cout << v[i] << endl;
    }

    return 0;
}

C++: #include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	int n =10;
	vector < int > hills;
	hills.resize(n);
	for(int i = 0; i < n; ++i)
	{
		cin >> hills[i];
	}

	sort(hills.begin(), hills.end(), greater<int>());

	int output_num = 3;
	for(int i = 0; i < output_num; ++i)
	{
		cout << hills[i] << endl;
	}

	return 0;
}

C++: #include<iostream>
#include<algorithm>
using namespace std;
int main(){
  int sum[10],i;
  for(i = 0; i < 10 ;i++)cin >> sum[i];
  sort(sum,sum+10);
  for(i = 9 ; i > 6 ;i--)cout << sum[i] << endl;
    return 0;
  }

C++: #include <stdio.h>


void insert(int a[],int n)
{
	int i,j,t;
	int x;


	for(i=1;i<n;i++){
		j=i;
		while(j>=1 && a[j-1] < a[j]){
			t=a[j];
			a[j]=a[j-1];
			a[j-1]=t;
			j--;
		}
	}
}



int main(void)
{
	int i;
	int a[10];

	for(i=0;i<10;i++){
		printf("%d  ",i+1);
		scanf("%d",&a[i]);
		insert(a,i);
	}



	printf("%d\n",a[0]);
	printf("%d\n",a[1]);
	printf("%d\n",a[2]);

	return 0;
}

C++: #include <iostream>
#include <algorithm>
using namespace std;

int main() {
  int high[10];
  for(int i = 0; i < 10; ++i) {
    cin >> high[i];
  }
  sort(high, high+10);
  for(int i = 0; i < 3; ++i) {
    cout << high[9-i] << endl;
  }
  return 0;
}

C++: #include <cstdio>
#include <algorithm>
using namespace std;
int reverse(int x,int y){
    return x>y;
}

int main(){
    int i;
    int mount[10];
    int *p=&mount[0];
    for(i=0;i<10;i++){
        scanf("%d\n",p);
        p++;
    }
    sort(mount,mount+10,reverse(x,y));
    printf("%d\n%d\n%d\n",mount[0],mount[1],mount[2]);
    return 0;
}

C++: #include<iostream>
#include<queue>
#include<string>
#include<stack>
#include<cstdio>

using namespace std;

int main(void)
{
  int a[10]={};
  int i=0;
  int j=0;

  for(i=0;i<10;i++)
    cin>>a[i];

  sort(a,a+10);

  cout<<a[9]<<endl<<a[8]<<endl<<a[7]<<endl;
  return 0;
}

C++: #include<iostream>
#include<algorithm>
using namespace std;



int main(){
 int a[10];
 for(int i=0;i<10;i++){
  cin>>a[i];
 }
 sort(a,a+5);
 for(int i=9;i>6;i--)
  cout<<a[i]<<endl;
return 0;
}

C++: #include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
 int i;
 vector<int> a;
 int c;
 for(i=0;i<10;i++)
 {
  cin>>c;
  a.push_back(c)
 }

  sort(a.begin(),a.end());

  cout<<a[9]<<endl<<a[8]<<endl<<a[7];

}

C++: #include <stdio.h>

int main(void)
{
        int tall[10];
	int sort[3] = {0, 0, 0};
	int i;
	
	for(i = 0; i < 10; i++){
                scanf("%d", &tall[i]);
		if(tall[i] > sort[0]){
			sort[2] = sort[1];
			sort[1] = sort[0];
			sort[0] = tall[i];
		}
		else if(tall[i] > sort[1]){
			sort[2] = sort[1];
			sort[1] = tall[i];
		}
		else if(tall[i] > sort[2]){
			sort[2] = tall[i];
		}
	}
	printf("%d\n%d\n%d", sort[0], sort[1], sort[2]);
	
	return 0;
	
}

C++: #include <bits/stdc++.h>

#define ll long long
#define llong long long
#define REP(i,n) for(auto i=0;i<n;++i)
#define REPI(itr,v) for(auto itr=v.begin();itr!=v.end();++itr)
#define FOR(i,a,b) for(auto i=a;i<b++i)
#define ALL(v) v.begin(),v.end()
#define pb push_back

using namespace std;

int main(){
  vector<int> a;
  for(int i = 0; i < 10; i++){
    int x; cin >> x;
    a.pb(x);
  }
  sort(ALL(a));
  for(int i = 9; i >= 7; i--){
    cout << a[i] << endl;
  }

  return 0;
}

C++: #include <iostream>
#include <vector>
#include <string>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <algorithm>	// require sort next_permutation count __gcd reverse etc.
#include <cstdlib>	// require abs exit atof atoi 
#include <cstdio>		// require scanf printf
#include <functional>
#include <numeric>	// require accumulate
#include <cmath>		// require fabs
#include <climits>
#include <limits>
#include <cfloat>
#include <iomanip>	// require setw
#include <sstream>	// require stringstream 
#include <cstring>	// require memset
#include <cctype>		// require tolower, toupper
#include <fstream>	// require freopen
#include <ctime>		// require srand
#define rep(i,n) for(int i=0;i<(n);i++)
#define ALL(A) A.begin(), A.end()

using namespace std;

typedef long long ll;
typedef pair<int, int> P;

int main()
{
//	cut here before submit 
//	freopen ("testcase.LT3H", "r", stdin );
	vector<int> h (10, 0 );
	rep (i, 10 ){
		scanf ("%d", &h[i] );
	} // end rep
	sort (ALL (h ), greater<int>() );
	rep (i, 3 ){
		printf ("%d\n", h[i] );
	} // end rep

	return 0;
}

C++: #include <iostream>
#include <array>
#include <functional>



using namespace std;

int main(){
	array<int,10> list;
	for (int i = 0; i < 10; i++){
		cin >> list[i];
	}
	sort(list.begin(), list.end(),greater<int>());
	for (int i = 0; i < 3; i++){
		cout << list[i] << endl;
	}
	return 0;
}

C++: #include <cstdio>
#include <algorithm>

using namespace std;

const int N = 10;
int a[N];

int main() {
  for(int i = 0; i < N; i++) {
    scanf("%d", &a[i]);
  }
  sort(a, a+N);
  for(int i = N-1; i > N-4; i++) printf("%d/n", a[i]);
}

C++: #define _USE_MATH_DEFINES
#include<iostream>
#include<string>
#include<queue>
#include<cmath>
#include<map>
#include<set>
#include<list>
#include<iomanip>
#include<vector>
#include<random>
#include<functional>
#include<algorithm>
#include<stack>
#include<cstdio>
#include<bitset>
#include<unordered_map>
#include<climits>
#include<fstream>
using namespace std;
///////////////////library zone!!!!!!!!!!!!!!!!!!!!!!!!!!!!
typedef long long ll;
typedef long double ld;
#define all(a) (a).begin(),(a).end()
const ll Mod = 1000000007;
const ll mod = 998244353;
struct H {
	ll x, y;
	bool operator<(const H &b) const {
		if (x != b.x) return x < b.x;
		return y < b.y;
	}
	bool operator>(const H &b) const {
		if (x != b.x) return x > b.x;
		return y > b.y;
	}
	bool operator==(const H &b) const { return x == b.x&&y == b.y; }
	bool operator!=(const H &b) const { return (*this) != b; }
};
struct P {
	ll pos, cost;
	bool operator<(const P &b) const { return cost < b.cost; }
	bool operator>(const P &b) const { return cost > b.cost; }
};
struct B {
	ll to, cost;
};
struct E {
	ll from, to, cost;
	bool operator<(const E &b) const { return cost < b.cost; }
	bool operator>(const E &b) const { return cost > b.cost; }
};
template<typename T, typename U>
void chmin(T &a, U b) {
	if (a > b) a = b;
}
template<typename T, typename U>
void chmax(T &a, U b) {
	if (a < b) a = b;
}
template<typename T>
T max_0(T a) {
	if (a < 0) return 0;
	return a;
}
template<typename T>
T min_0(T a) {
	if (a > 0) return 0;
	return a;
}
ll read() {
	ll u;
	ll k = scanf("%lld", &u);
	return u;
}
ll gcd(ll i, ll j) {
	if (i > j) swap(i, j);
	if (i == 0) return j;
	return gcd(j%i, i);
}
ll mod_pow(ll x, ll n, ll p) {
	ll res = 1;
	while (n > 0) {
		if (n & 1) res = res * x % p;
		x = x * x % p;
		n >>= 1;
	}
	return res;
}//x^n%p
const ll Inf = 3023372036854775807;
const int inf = 1500000000;
#define int long long
//----------------------------------------------------
signed main() {
	int a[10];
	for (int i = 0; i < 10; i++) {
		cin >> a[i];
	}
	sort(a, a + 10);
	reverse(a, a + 10);
	cout << a[0] << endl << a[1] << endl << a[2] << endl;
}