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++: #include<iostream>
#include<stdio.h>
using namespace std;
int main(){

    int a[10];
    for(int i=0;i<10;i++)
        scanf("%d",&a[i]);
    int b[3]={0};
    for(int i=0;i<3;i++)
    {
        int t;
        for(int j=0;j<10;j++)
        {
            if(a[j]>b[i])
            {
                b[i]=a[j];
                t=j;
            }
        }
        a[t]=0;
    }
    for(int i=0;i<3;i++)
        printf("%d\n",b[i]);

    return 0;
}

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

const int MAX_N = 10000;
int n;
int a[MAX_N];

void solve(){
	std::sort(a, a + n);
	for(int i = 0; i < 3; i ++){
		printf("%d\n", a[n - 1 - i]);
	}
}

int main(int argc, char const *argv[]){
//	freopen("in.txt", "r", stdin);

	for(n = 0; scanf("%d", &a[n]) != EOF; n ++);
	solve();

	return 0;
}

C++: #include <iostream>

using namespace std;

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

  for (int i = 0; i < 3; i++) {
    int max = 0;
    for (int i = 0; i < 10; i++) {
      max = hill[i] > max ? hill[i] : max;
    }

    cout << max << endl;

    for (int i = 0; i < 10; i++) {
      if (hill[i] == max) {
        hill[i] = 0;
        break;
      }
    }
  }

  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 + 10, greater<int>());
	for (int i = 0; i < 3; i++)
		cout << A[i] << endl;
}

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

int main(int argc, const char * argv[]) {
    
    if(fin.fail()){
        cout << "load fail...";
    }
    
    vector<int> heights(10);
    for (int i=0; i<10; i++){
        cin >> heights[i];
    }
    sort(heights.begin(), heights.end(), greater<int>());
    
    for (int i=0; i<3; i++){
        cout << heights[i] << endl;
    }
    
    return 0;
}

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

using namespace std;

int main()
{
	int deta[11];

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

	sort (deta, deta + 10);

	for (int i = 9; i >= 7; i--){
		cout << deta[i] << endl;
	}

	return 0;
}

C++: #include<string>
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
	int mountain[10];
	for (int i = 0; i < 10; i++)
	{
		cin>>mountain[i];
	}

	sort(mountain,mountain+10);
	cout<<mountain[9]<<endl;
	cout << mountain[8] << endl;
	cout << mountain[7] << endl;
	return false;
}

C++: #include<stdio.h>
           
int main(void){
    /* 宣言と初期化 */
    int hai[10];
    int id[2];
    int i;
    int temp2nd;
    int temp3rd;
    int tempmax;
           
for(i=0;i<10;i++)
{
   cin >> hai[i];
}
    /* 代入 */
    temp2nd=hai[0];
    tempmax=hai[0];
    temp3rd=hai[0];
    /* 計算 */
    for(i=0;i<10;i++){
        /* 最大値求める */
        if(hai[i]>tempmax)
       {tempmax=hai[i];id[0]=i;}
    }
    for(i=0;i<10;i++){
        /*2番目求める */
        if(hai[i]<tempmax&&hai[i]>temp2nd&& i != id[0])
        {temp2nd=hai[i];id[1]=i;}
    } 
    for(i=0;i<10;i++){
        /* 3番目求める */
        if(hai[i]>temp3rd&&hai[i]<temp2nd && i != id[1] && i != id[0])
       {temp3rd=hai[i];}
    }
           
    /* 表示 */
    printf("最も高い山の高さ　%d\n",tempmax);
    printf("２番目に高い山の高さ　%d\n",temp2nd);
    printf("３番目に高い山の高さ　%d\n",temp3rd);
           
    return 0;
}

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

#define ALL(a) a.begin(),a.end()

using namespace std;

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

  for ( int i = 0; i < 10; i++ ) {
    cin >> t;
    v.push_back(t);
  }

  sort(ALL(v));

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

  return 0;
}

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

C++: fn main(){
    let mut hs: Vec<i32> = vec![];
    for _i in 0..10{
        let n=readln();
        hs.push(n);
    }
    hs.sort();
    for i in (7..10).rev(){
        println!("{}",hs[i]);
    }
}
    

// --- template ---
#[allow(unused_imports)]
use std::cmp::{max, min};
#[allow(unused_imports)]
 
pub trait FromLn {
    fn fromln(s: &str) -> Self;
}
pub fn readln<T: FromLn>() -> T {
    let mut buf = String::new();
    let _ = ::std::io::stdin().read_line(&mut buf).unwrap();
    T::fromln(buf.trim())
}
pub fn readlns<T: FromLn>(n: usize) -> Vec<T> {
    let mut vs = vec![];
    for _ in 0..n {
        vs.push(readln());
    }
    vs
}
macro_rules! fromln_primitives {
    ($($t:ty),*) => { $(
        impl FromLn for $t {
            fn fromln(s: &str) -> $t {
                s.parse().unwrap()
            }
        }
    )* }
}
fromln_primitives!(
    String,
    bool,
    f32,
    f64,
    isize,
    i8,
    i16,
    i32,
    i64,
    usize,
    u8,
    u16,
    u32,
    u64
);
impl<T> FromLn for Vec<T>
where
    T: FromLn,
{
    fn fromln(s: &str) -> Vec<T> {
        s.split_whitespace().map(T::fromln).collect()
    }
}
impl FromLn for Vec<char> {
    fn fromln(s: &str) -> Vec<char> {
        s.chars().collect()
    }
}
macro_rules! fromln_tuple {
    ($($t:ident),*) => {
        impl<$($t),*> FromLn for ($($t),*) where $($t: FromLn),* {
            fn fromln(s: &str) -> ($($t),*) {
                let mut it = s.split_whitespace();
                let t = ($($t::fromln(it.next().unwrap())),*);
                assert_eq!(it.next(), None);
                t
            }
        }
    }
}
fromln_tuple!(A, B);
fromln_tuple!(A, B, C);
fromln_tuple!(A, B, C, D);
fromln_tuple!(A, B, C, D, E);
fromln_tuple!(A, B, C, D, E, F);

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);

  for(int i=9;i>=7;i--)cout << h[i] << endl;

  return 0;
}

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

int main(){
    int hest[3];
    int h;
    for(int i=0;i<10;i++){
        std::cin>>h;
        for(int j=0;j<3;j++){
            if(hest[i]<h){
                hest[i] = h;
            }
        }
    }

    for(int j=0;j<3;j++){
        std::cout<<hest[i]<<std::endl;
    }

    return 0;
}

C++: #include <stdio.h>


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

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

int main(){
	
	int height[10] = {};

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

	int f = 0, s = 0, t = 0;

	for (int i = 0; i < 9; i++){
		if (height[i] >= t){
			t = height[i];
		}
		if (t >= s){
			swap(s, t);
		}
		if (s >= f){
		swap(f,s);
		}
	}
    
	cout << f << "\n" << s << "\n" << t << endl;

		return 0;
}

C++: #include<iostream>
#include<algorithm>
using namespace std;
itn data[10];

int main(){
for(int i=0;i<10;i++)cin>>data[i];
sort(data,data+10);

for(int i=0;i<3;i++)cout<<data[i]<<endl;

}