Go: package main

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

var scanner = bufio.NewScanner(os.Stdin)

func nextInt() int {
	scanner.Scan()
	i, e := strconv.Atoi(scanner.Text())
	if e != nil {
		panic(e)
	}
	return i
}
func main() {
	heighs := make([]int, 10)
	for i := range heighs {
		heighs[i] = nextInt()
	}
	sort.Sort(sort.Reverse(sort.IntSlice(heighs)))
	for i := 0; i < 3; i++ {
		fmt.Println(heighs[i])
	}
}

C++: /* 2012-07-07T08:22:03 */
#define DEBUG_ON
#define CONDITION true
using namespace std;/*{{{*/

#include <algorithm>
#include <cassert>
#include <cctype>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <sys/time.h>
#include <vector>

#define INF (1e9)
static const double PI (3.14159265358979323846);
static const double EPS (1e-10);

typedef long long int ll;
typedef unsigned long long int ull;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<string> vs;
typedef pair<int, int> pii;
typedef complex<double> P;

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();}
inline double now(){ struct timeval tv; gettimeofday(&tv, NULL); return ((double)(tv.tv_sec) + (double)(tv.tv_usec) * 1e-6); }

#define FOR(i, b, e) for (typeof(b) i = (b); assert((i) <= (e)), i != (e); ++i)
#define REP(i, n) FOR(i, 0, n)

#define IFC(c) if(c) continue;
#define IFB(c) if(c) break;
#define IFR(c, r) if(c) return r;

#define OPOVER(_op, _type) inline bool operator _op (const _type &t) const

#define arrsz(a) ( sizeof(a) / sizeof(a[0]) )

#define F first
#define S second
#define MP(a, b) make_pair(a, b)

#define SZ(a) ((ll)a.size())
#define PB(e) push_back(e)
#define SORT(v) sort((v).begin(), (v).end())
#define RSORT(v) sort((v).rbegin(), (v).rend())

#define ALL(a) (a).begin(), (a).end()
#define RALL(a) (a).rbegin(), (a).rend()
#define EACH(c,it) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it)
#define EXIST(s,e) ((s).find(e)!=(s).end())

#define BIT(n) (1ULL << (n))
#define BITOF(n, m) ((n) >> (m) & 1)

#define RANGE(a, b, c) ((a) <= (b) && (b) <= (c))

#ifdef DEBUG_ON
#define dprt(fmt, ...) if (CONDITION) fprintf(stderr, fmt, __VA_ARGS__)
#define darr(a) if (CONDITION) copy( (a), (a) + arrsz(a), ostream_iterator<int>(cerr, " ") ); cerr << endl
#define darr_range(a, f, t) if (CONDITION) copy( (a) + (f), (a) + (t), ostream_iterator<int>(cerr, " ") ); cerr << endl
#define dvec(v) if (CONDITION) copy( ALL(v), ostream_iterator<int>(cerr, " ") ); cerr << endl
#define darr2(a, n, m) if (CONDITION) FOR(i, 0, (n)){ darr_range( (a)[i], 0, (m) ); }
#define dvec2(v) if (CONDITION) FOR(i, 0, SZ(v)){ dvec( (v)[i] ); }
#define WAIT() if (CONDITION) { string _wait_; cerr << "(hit return to continue)" << endl; getline(cin, _wait_); }
#else
#define cerr if(0) cerr
#define dprt(fmt, ...)
#define darr(a)
#define darr_range(a, f, t)
#define dvec(v)
#define darr2(a, n, m)
#define dvec2(v)
#define WAIT()
#endif
/*}}}*/

int main(int argc, char const* argv[])
{
	vector<int> heights;
	REP (i, 10) {
		int h; cin >> h;
		heights.PB(h);
	}
	RSORT(heights);
	REP (i, 3) {
		cout << heights[i] << endl;
	}
	return 0;
}

C++: #include <stdio.h>

int main(void)
{
	int i,f=0,s=0,t=0,h[10];
	for(i=0;i<10;i++){
		scanf("%d",&h[i]);
	}
	for(i=0;i<10;i++){
		if(f<h[i]){
			f=h[i];
		}
	}
	for(i=0;i<10;i++){
		if(s<h[i]&&f>h[i]){
			s=h[i];
		}
	}
	for(i=0;i<10;i++){
		if(t<h[i]&&s>h[i]){
			t=h[i];
		}
	}
	printf("%d\n%d\n%d\n",f,s,t);
	return 0;
}

C++: # include <iostream>
# include <algorithm>
using namespace std;
int main(){
  int Num_mountains = 10;
  int heights[Num_mountains];
  for (int i = 0;i<Num_mountains;i++)
    cin >> heights[i];
  sort(heights,heights+Num_mountains,greater<int>());
  for(int i=0;i<3;i++)
    cout << heights[i] << endl;

}

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

void swap(int &x, int &y)
{
    int tmp = x;
    x = y;
    y = tmp;
}

int main(void){

	int a[11],max1,max2,max3;

	for (int i=1; i<11; i++){
		while (true){ 
		cout << "山の高さ" << i << "（整数）" ;			
		cin >> a[i];
		if ((cin.good() == 1) && (a[i] >= 0) && (a[i] <= 10000)) {
			break;
		}
		}	
	}

	max1 = a[1];

	for (int i=2; i<11; i++){
		if (max1 < a[i]){
			swap(max1,a[i]);
		}
	}
	max2 = a[2];

	for (int i=3; i<11; i++){
		if (max2 < a[i]){
			swap(max2,a[i]);
		}
	}
	max3 = a[3];

	for (int i=4; i<11; i++){
		if (max3 < a[i]){
			swap(max3,a[i]);
		}
	}


		cout << max1 << endl;
		cout << max2 << endl;
		cout << max3 << endl;
		

return 0;
	}

C++: #include <bits/stdc++.h>
using namespace std;
int main(){
  int i,a[10];
  for(i=0;i<10;i++)cin>>a[i];
  sort(a,a+9);
  cout<<a[9]<<endl<<a[8]<<endl<<a[7]<<endl;
}

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

template<typename T>
int array_max(T array[],int n)
{
	int max;
	max=0;
	for(int i=1;i<n;i++)
	{
		if(array[i]>array[max]) max=i;
		
	}
	return max;
}

int main(){
	int mount[10];
	for(int i=0;!cin.eof();i++){
		cin >> mount[i];
	}
	for(int i=0;i<3;i++)
	{
		int max=array_max(mount,10-i);
		cout << mount[max] << endl;
		swap(mount[max],mount[10-i]);
		
	}
   return 0;
}

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

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

  for (unsigned int i = 0; i < 10; i++) {
    cin >> a;
    v.push_back(a);
    if (cin.eof()) { break; }
  }

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

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

  return 0;
}

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

using namespace std;
int x[10];
int main(){
for(i=0;i<10;i++){
cin>>x[i];
}
sort(x,x+10);
cout>>x[7]>>endl;
cout>>x[8]>>endl;
cout>>x[9]>>endl;
return 0;
}

C++: #include<iostream>
using namespace std;
int main(){
  int m;
  int m1=0,m2=0,m3=0;
  for(int i=0;i<10i++){
    cin << m << endl;
    if(m1>m){
      m3 = m2;     
      m2 = m1;     
      m1 = m;
    }
    else if(m2>m){
      m3 = m2;   
      m2 = m;
    }
    else if(m3>m){
      m3 = m2;
    }
  }
  cout << m1 << endl << m2 << endl << m3 <<endl;
  return 0;
}

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

using namespace std;

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

    for(i = 0;i < 10;i++)
        scanf("%d",&a[i]);
    sort(a,a+10);

    printf("%d %d %d\n",a[9],a[8],a[7]);

    return 0;
}

C++: import java.util.Scanner;
import java.util.Arrays;
import acjava.util.Collections;

class Main{
	public static void main(String[] a){
			Scanner sc=new Scanner(System.in);
			int[] input=new input[10];
			for(int i=0;i<10;i++){
				input[i]=sc.nextLine();
			}
			Arrays.sort(input,Collections.reserveOrder());
		for(int j=0;j<3;j++){
		System.out.println(input[i]);
		}
	}
}

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

int main(){
	int ary[10];
	for(int i=0;i<10;i++){
		cin>>ary[i];
	}
	for(int i=0;i<10;i++){
		for(int j=i+1;j<10;j++){
			if(ary[i]<ary[j]){
				swap(ary[i], ary[j]);
			}
		}
	}
	cout<<ary[0]<<endl;
	cout<<ary[1]<<endl;
	cout<<ary[2]<<endl;
	return 0;
}

C++: #include<iostream>
using namespace std;
int main(void){
	int T,t3=0,t2=0,t1=0;
	for(int i=0;i>10;i++){
		cin>>T;
		if(T>=t1){
			t1=T;
			t2=t1;
			t3=t2;
		}
		else if(T>=t2){
			t2=T;
			t3=t2;
		}
		else if(T>=t3){
			t3=T;
		}
	}
	cout<<t1<<endl<<t2<<endl<<t3;
	return 0;
}

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