Go: package main

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

func main() {
        fp := os.Stdin
        scanner := bufio.NewScanner(fp)
        var lst [3]int

        for scanner.Scan() {
                num, _ := strconv.Atoi(scanner.Text())
                if lst[0] < num {
                        lst[2] = lst[1]
                        lst[1] = lst[0]
                        lst[0] = num
                } else if lst[1] < num {
                        lst[2] = lst[1]
                        lst[1] = num
                } else if lst[2] < num {
                        lst[2] = num
                }
        }

        for _, i := range lst {
                fmt.Printf("%d\n", i)
        }
}

C++: #include <algorithm>
#include <bitset>
#include <cctype>
#include <cfloat>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <fstream>
#include <functional>
#include <iomanip>
#include <iostream>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#define FOR(x,a,b) for(int x=a;x<b;x++)
#define REP(x,b) for(int x=0;x<b;x++)
#define FORSIZE(x,A) for(int x=0;x<A.size();x++)
#define ITR(x,c) for(__typeof(c.begin()) x=c.begin();x!=c.end();x++)
#define SORT(x) sort(x.begin(),x.end())
#define RSORT(x) sort(x.rbegin(),x.rend())
#define rsort(x,n) sort(x, x+n, greater<int>())
#define REV(x) reverse(x.begin(),x.end())
using namespace std;
typedef long long ll;
inline int toInt(std::string s) {int v; std::istringstream sin(s);sin>>v;return v;}
template<class T> inline std::string toString(T x) {std::ostringstream sout;sout<<x;return sout.str();}

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

C++: #include<iostream>
using namespace std;
int main()
{
	int a[10];
	
	for(int i=0; i<10; i++){
		cin>>a[i];
	}
	
	int T=0;
	for(int	j=1; j==0; j++;){
		T=0;
		for(int i=0; i<9; i++){
			if(a[i]<a[i+1]){
				int L;
				L=a[i];
				a[i]=a[i+1];
				a[i+1]=L;
				T=1;
			}
		}
		if(T=0) break;
	}
	
	for(int	i=0; i<3; i++){
		cout<<a[i]<<"\n";
	}
}

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


int main()
{
	int mou[10], m1=0, m2=0, m3=0,a1=0,a2=0;
	for (int i = 0;i < 10;i++)
		cin >> mou[i];

	for (int a = 0;a < 10;a++) {
		if (m1 < mou[a])
			m1 = mou[a];
	}
	for (int b = 0;b < 10;b++) {
		if (m1 == mou[b])
			a1++;
	}
	if (a1 == 2)
		m2 = m1;
	if (a1 > 2) {
		m2 = m1;
		m3 = m1;
	}
	
	for (int c = 0;c < 10;c++) {
		if (m2 < mou[c] && mou[c] < m1)
			m2 = mou[c];
	}
	for (int e = 0;e < 10;e++) {
		if (m2 == mou[e])
			a2++;
	}
	if (a2 > 2 && m1 != m2)
		m3 = m2;

	for (int d = 0;d < 10;d++) {
		if (m3 < mou[d] && mou[d] < m2)
			m3 = mou[d];
	}

	cout << m1 << endl << m2 << endl << m3 << endl;
    return 0;
}

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

int main(){
    
    int i;
    int max1, max2, max3;
    std::array <int, 10> hill;
    
    max2 = 0;
    max3 = 0;

    for (i = 0; i < 10; ++i) {
        std::cin >> hill.at(i);
        
        if (i == 0) max1 = hill.at(0);
        
        if (max1 < hill.at(i)) { 
            max2 = max1;                    
            max1 = hill.at(i);
        } else if (max2 < hill.at(i)) {
            max3 = max2;
            max2 = hill.at(i);
        } else if (max3 < hill.at(i)) max3 = hill.at(i);
        else {}
    }
    
    std::cout << max1 << std::endl << max2 << std::endl << max3 << std::endl;
    
    return 0;
}

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

int gunung[10];

int main()
{
	for(int a=0;a<10;a++)
	{
		scanf("%d",&gunung[a]);
	}
	sort(gunung,gunung+10);
	for(int a=9;a>6;a--)
	{
		printf("%d\n",gunung[a]);
	}
	return 0;
}

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

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

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

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

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

C++: #include <stdio.h>
#include <math.h>
 
int main() {
    int m[10];
    int ans[3];
    for(int i=0; i<10; i++) scanf("%d", &m[i]);
 
    ans[0] = 0; ans[1] = 0; ans[2] = 0;
    for(int j=0; j<10; j++) {
        if(m[ans[0]] < m[j]) {
            ans[0] = j;
        }
    }
    if(ans[1] == ans[0]) {
        if(ans[1] == 0) ans[1] = 1;
        else ans[1] = ans[0]-1;
    }
    for(int j=0; j<10; j++) {
        if(m[ans[1]] < m[j] && ans[0] != j) {
            ans[1] = j;
        }
    }
    if(ans[2] == ans[0]) {
        if(ans[2] == 0) ans[2] = 2;
        else ans[2] = ans[0]-2;
    }
    for(int j=0; j<10; j++) {
        if(m[ans[2]] < m[j] && ans[0] != j && ans[1] != j) {
            ans[2] = j;
        }
    }
    printf("%d\n%d\n%d\n", m[ans[0]], m[ans[1]], m[ans[2]]);
    return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;

typedef long int lint;
typedef long long int llint;
typedef pair<int, int> pii;
typedef pair<int, string> pis;
typedef pair<long, long> pll;

#define EACH(t, c) for (auto&& t : c)
#define ALL(c) begin(c), end(c)
#define FOR(i, s, e) for (int i = (s); i < (int)(e); ++i)
#define REP(i, n) FOR(i, 0, n)
#define endl '\n'
#define fk first
#define sv second

const int dx[] = {1, 0, -1, 0, 1, 1, -1, -1}, dy[] = {0, 1, 0, -1, 1, -1, 1, -1};
const int MOD = (int)1e9 + 7;
const int INF = 999999999;

template<typename T>
void print(const std::vector<T>& v, char sep=' ') {
  for (int i = 0; i < (int)v.size(); i++) {
    if (i != 0) cout << sep;
    cout << v[i];
  }
  cout << endl;
}

int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int a[10];

  REP(i, 10) {
    cin >> a[i];
  }
  sort(ALL(a));

  REP(i, 3) {
    cout << a[9 - i] << endl;
  }
}

C++: A=[]
for i in range(10):
	A.append(int(input()))
A.sort()
A.reverse()
for i in range(3):
	print(A[i])

C++: // includes
#include <cstdio>
#include <cstdint>
#include <iostream>
#include <iomanip>
#include <string>
#include <queue>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <algorithm>
#include <utility>
#include <functional>
#include <cmath>
#include <climits>
#include <bitset>

// macros
#define ll long long int
#define pb push_back
#define mk make_pair
#define pq priority_queue
#define FOR(i, a, b) for(int i=(a); i<(b);++i)
#define rep(i, n) FOR(i, 0, n)

using namespace std;

//  types
typedef pair<int, int> P;
typedef pair<ll, int> Pl;
typedef pair<ll, ll> Pll;
 
// constants
const int inf = 1e9;
const ll linf = 1LL << 50;
const double EPS = 1e-10;

// solve

int main(int argc, char const* argv[])
{
  vector<int> h;
  rep(i, 10){
    int x;
    cin >> x;
    h.pb(x);
  }
  sort(h.begin(), h.end());
  cout << h[9] << endl;
  cout << h[8] << endl;
  cout << h[7] << endl;
	return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;int a[10],*c=a-1;int main(){while(cin>>*++c);sort(a,a+10);while(c>a+7)cout<<*--c<<endl;}