Go: package main

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

var maxint = 10000
var scanner = bufio.NewScanner(os.Stdin)

func nextInt() (int, error) {
	scanner.Scan()
	return strconv.Atoi(scanner.Text())
}

func main() {
	scanner.Split(bufio.ScanWords)
	arr := make([]int, 10)
	for i := range arr {
		n, _ := nextInt()
		arr[i] = n
	}

	sort.Slice(arr, func(i, j int) bool {
		return arr[i] >= arr[j]
	})

	arrStr := fmt.Sprintf("%+v", arr[0:3])
	arrStr = arrStr[1:(len(arrStr) - 1)]
	arrStr = strings.Replace(arrStr, " ", "\n", -1)
	fmt.Println(arrStr)
}

C++: #pragma GCC optimize "O3"
#include <vector>
#include <queue>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>
#define whole(f,x,...) ([&](decltype((x)) whole) { return (f)(begin(whole), end(whole), ## __VA_ARGS__); })(x)
#define ALL(a)  (a).begin(),(a).end()
#define RALL(a) (a).rbegin(), (a).rend()
#define PB push_back
#define MP make_pair
#define SZ(a) int((a).size())
#define EACH(i,c) for(typeof((c).begin()) i=(c).begin(); i!=(c).end(); ++i)
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define SORT(c) sort((c).begin(),(c).end())
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)  FOR(i,0,n)
#define REP_FROM(i,m,n) for (int i = (m); (i) < int(n); ++(i))
#define REP_REV(i,n) for (int i = (n)-1; (i) >= 0; --(i))
#define REP_FROMREV(i,m,n) for (int i = (n)-1; (i) >= int(m); --(i))
#define CLR(a) memset((a), 0 ,sizeof(a))
#define dump(x)  cerr << #x << " = " << (x) << endl;
#define debug(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << endl;
#ifndef LOCAL
#define cerr if (false) cerr
#endif
using namespace std;
inline int toInt(string s) {int v; istringstream sin(s);sin>>v;return v;}
template<class T> inline string toString(T x) {ostringstream sout;sout<<x;return sout.str();}
template<class T> inline T sqr(T x) {return x*x;}
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<string> VS;
typedef pair<int, int> PII;
typedef long long LL;

template <class T> inline void setmax(T & a, T const & b) { a = max(a, b); }
template <class T> inline void setmin(T & a, T const & b) { a = min(a, b); }
template <class T> T sq(T x) { return x * x; }
template <class T> T clamp(T a, T l, T r) { return min(max(a, l), r); } // [l, r]
const double EPS = 1e-10;
const double PI  = acos(-1.0);

int main(int argc, char *argv[]) {
	// Something to do
	priority_queue<int> pq;
	REP(i, 10) {
		int height;
		cin >> height;
		pq.push(height);
	}
	REP(i, 3) {
		cout << pq.top() << endl;
		pq.pop();
	}
	return 0;
}

C++: #include<iostream>
#include<queue>

using namespace std;

int main(){
  priority_queue<int> que;
  for(int i = 0; i < 10; i++){
    int x;
    cin >> x;
    que.push(x);
  }
  for(int i = 0; i < 3; i++){
    cout << que.top() << "\n";
    que.pop();
  }

  return 0;
}

C++: #include <iostream>


int main()
{
	int mountain,first=1, second=1, third=1;

	for(int i=0;i<10;++i)
	{
		std::cin >> mountain;

		

		if(first<mountain )
		{
			third = second;

			second = first;

			first = mountain;
		}

		else if(second<mountain)
		{
			third = second;

			second = mountain;
		}

		else if(third<mountain)
		{
			third = mountain;
		}

	}

	std::cout << first << '\n' << second << '\n' << third << '\n';
}

C++: #include <iostream>
using namespace std;
int height[10];
void sort(int A[]);
void swap(int &a, int &b);
int main()
{
	int n = 10;
	for (int i = 0; i < 10; i++)
		cin >> height[i];
	sort(height);
	return 0;
}
void sort(int A[])
{
	int i, j, min;
	for (i = 0; i < 10; i++)
		min = i;
	for (j = i; j < 10; j++)
	{
		if(A[j] < A[min])
		{
			swap(A[j], A[min]);
			min = j;
		}
	}
	for (i = 0; i < 3; i++)
	{
		cout<<A[i]<<endl;
	}
}
void swap(int &a, int &b)
{
	int t = a;
	a = b;
	b = t;
}

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

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

using namespace std;

int main(){
  int h[10];
  for(int i = 0; i < 10; i++)
    cin >> h[i];
  sort(h, h + 10, greater<int>());
  for(int i = 0; i < 3; i++)
    cout << h[i] << "\n";
}

C++: #include <iostream>
#include <iomanip>
#include <vector>
#include <complex>
#include <cmath>
#include <algorithm>
#define shosu(x) fixed<<setprecision(x)
using namespace std;
int main(){
	int high;
	vector<int> tmp;
	for(int i=0;i<10;i++){
		cin>>high;
		tmp.push_back(high);
	}
	sort(tmp.begin(),tmp.end());
	for(int i=9;i>6;i--){
		cout<<tmp[i]<<endl;
	}
}

C++: #include<iostream>

int main(){
    int a[10],i,j,n;
    for(i=0;i<10;i++){
        std::cin>>a[i];
        }
        
        for(i=0;i<9;i++){
        	for(j=i+1;j<9;j++){
        		if(a[i]<a[j]){
			n=a[i];
			a[i]=a[j];
			a[j]=n;
			}
		}	
	}
	for(i=0;i<3;i++){
	std::cout<<a[i]<<std::endl;
	}       	
	
	return 0;
}

C++: #include <iostream>
#include <vector>

#define RANKING 3
int main(){
	int x;
	int ranking[RANKING] = {0};
	for(int i = 0; i < 10; i++){
		std::cin >> x;
		for(int i = 0; i < RANKING; i++){
			if(ranking[i] < x){
				for(int j = RANKING-1; j > i; j--){
					ranking[j] = ranking[j-1];
				}
				ranking[i] = x;
				break;
			}
		}
	}
	for(int i = 0; i < RANKING; i++){
		std::cout << ranking[i] << std::endl;
	}
	return 0;
}

C++: import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws IOException{
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] array = new String[10];
        int[] heights = new int[10];
        for(int i=0; i<10; i++){
        	System.out.println("enter height: ");
        	array[i] = br.readLine();
        	heights[i] = Integer.parseInt(array[i]);
        }
        
        Arrays.sort(heights);
        for(int i=9; i>6; i--){
        	System.out.println(heights[i]);
        }
        
        
    }

}

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

using namespace std;

int main(void)
{

  int a, b, c; // aツつゥツづァツ暗ェツ氾板債つつ「ツ山
  int n;

  a = b = c = 0;
  
  for(int i = 0; i < 10; i++){
    cin >> n;
    if ( a < n ) {
      swap(a,n);
    }
    if ( b < n ) {
      swap(b,n);
    }
    if ( c < n ) {
      swap(c,n);
    }
  }

  cout << a << endl;
  cout << b << endl;
  cout << c << endl;
  
}

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

int main(){
	int suchi,high=0,middle=0,low=0,i,flag=0,a,b,c;
	
	for(i=0;i<10;i++){
		cin>>suchi;
			
		if(flag==0){
			high = suchi;
			flag++;
			}
			
		else{
			if(suchi<low);
			
			else if(suchi>=low&&suchi<middle)
				low = suchi;
			
			else if(suchi>=middle&&suchi<high){
				low = middle;
				middle = suchi;
			}else{
				low = middle;
				middle = high;
				high = suchi;
				}
				
			}
	}
	
	cout<<high<<endl;
	cout<<middle<<endl;
	cout<<low<<endl;
	
	return 0;
}

C++: #include<iostream>
using namespace std;
//????????????
void swap(int idx1, int idx2, int *node)
{
	int f = node[idx1];
	node[idx1] = node[idx2];
	node[idx2] = f;
}
//??????????????????????????????????????nlogn
void quickSort(int left, int right , int *node)
{
	int pl = left;
	int pr = right;
	int pivot_f = node[(pl + pr) / 2];
	do
	{
		while (node[pl] < pivot_f)
		{
			pl++;
		}
		while (node[pr]> pivot_f)
		{
			pr--;
		}
		if (pl <= pr)
		{
			swap(pl++, pr-- , node);
		}
	} while (pl <= pr);
	if (left < pr) quickSort(left, pr , node);
	if (pl <= right) quickSort(pl, right , node);
}

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