import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
  static InputReader in;
  static PrintWriter out;
  
  static class Solution {
    void solve() throws IOException {
      int[] height = new int[10];
      int first;
      int second;
      int third;
      
      
      height[0] = in.nextInt();
      int max = height[0];
      int memmax = 0;
      
      for (int i = 1; i < 10; i++) {
        height[i] = in.nextInt();
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      first = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      second = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      third = max;
      
      out.println(first);
      out.println(second);
      out.println(third);
      
//      End solve()
    }
//    End Solution
}


  public static void main(String[] args) throws IOException {
    in = new InputReader(System.in);
    out = new PrintWriter(System.out);
    Solution solver = new Solution();
    solver.solve();
    out.close();
}


  static class InputReader {
    public BufferedReader br;
    public StringTokenizer st;

    public InputReader(InputStream stream) {
      br = new BufferedReader(new InputStreamReader(stream));
    }

    public int nextInt() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Integer.parseInt(st.nextToken());
    }

    public long nextLong() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Long.parseLong(st.nextToken());
    }

    public String next() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return st.nextToken();
    }

    public double nextDouble() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Double.parseDouble(st.nextToken());
    }

  }

} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStream; InputStream java.io import java.io.InputStreamReader; InputStreamReader java.io import java.io.PrintWriter; PrintWriter java.io import java.util.Scanner; Scanner java.util import java.util.StringTokenizer; StringTokenizer java.util public class Main {
  static InputReader in;
  static PrintWriter out;
  
  static class Solution {
    void solve() throws IOException {
      int[] height = new int[10];
      int first;
      int second;
      int third;
      
      
      height[0] = in.nextInt();
      int max = height[0];
      int memmax = 0;
      
      for (int i = 1; i < 10; i++) {
        height[i] = in.nextInt();
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      first = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      second = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      third = max;
      
      out.println(first);
      out.println(second);
      out.println(third);
      
//      End solve()
    }
//    End Solution
}


  public static void main(String[] args) throws IOException {
    in = new InputReader(System.in);
    out = new PrintWriter(System.out);
    Solution solver = new Solution();
    solver.solve();
    out.close();
}


  static class InputReader {
    public BufferedReader br;
    public StringTokenizer st;

    public InputReader(InputStream stream) {
      br = new BufferedReader(new InputStreamReader(stream));
    }

    public int nextInt() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Integer.parseInt(st.nextToken());
    }

    public long nextLong() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Long.parseLong(st.nextToken());
    }

    public String next() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return st.nextToken();
    }

    public double nextDouble() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Double.parseDouble(st.nextToken());
    }

  }

} Main static InputReader in; in static PrintWriter out; out public static void main(String[] args) throws IOException {
    in = new InputReader(System.in);
    out = new PrintWriter(System.out);
    Solution solver = new Solution();
    solver.solve();
    out.close();
} main {
    in = new InputReader(System.in);
    out = new PrintWriter(System.out);
    Solution solver = new Solution();
    solver.solve();
    out.close();
} in = new InputReader(System.in) in new InputReader(System.in) out = new PrintWriter(System.out) out new PrintWriter(System.out) Solution solver = new Solution(); solver new Solution() solver.solve() solver.solve solver out.close() out.close out String[] args args static class Solution {
    void solve() throws IOException {
      int[] height = new int[10];
      int first;
      int second;
      int third;
      
      
      height[0] = in.nextInt();
      int max = height[0];
      int memmax = 0;
      
      for (int i = 1; i < 10; i++) {
        height[i] = in.nextInt();
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      first = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      second = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      third = max;
      
      out.println(first);
      out.println(second);
      out.println(third);
      
//      End solve()
    }
//    End Solution
} Solution void solve() throws IOException {
      int[] height = new int[10];
      int first;
      int second;
      int third;
      
      
      height[0] = in.nextInt();
      int max = height[0];
      int memmax = 0;
      
      for (int i = 1; i < 10; i++) {
        height[i] = in.nextInt();
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      first = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      second = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      third = max;
      
      out.println(first);
      out.println(second);
      out.println(third);
      
//      End solve()
    } solve {
      int[] height = new int[10];
      int first;
      int second;
      int third;
      
      
      height[0] = in.nextInt();
      int max = height[0];
      int memmax = 0;
      
      for (int i = 1; i < 10; i++) {
        height[i] = in.nextInt();
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      first = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      second = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      third = max;
      
      out.println(first);
      out.println(second);
      out.println(third);
      
//      End solve()
    } int[] height = new int[10]; height new int[10] 10 int first; first int second; second int third; third height[0] = in.nextInt() height[0] height 0 in.nextInt() in.nextInt in int max = height[0]; max height[0] height 0 int memmax = 0; memmax 0 for (int i = 1; i < 10; i++) {
        height[i] = in.nextInt();
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      } int i = 1; int i = 1; i 1 i < 10 i 10 i++ i++ i {
        height[i] = in.nextInt();
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      } {
        height[i] = in.nextInt();
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      } height[i] = in.nextInt() height[i] height i in.nextInt() in.nextInt in max = Math.max(max, height[i]) max Math.max(max, height[i]) Math.max Math max height[i] height i if (max == height[i]) {
          memmax = i;
        } max == height[i] max height[i] height i {
          memmax = i;
        } memmax = i memmax i first = max first max height[memmax] = -1 height[memmax] height memmax -1 1 max = height[0] max height[0] height 0 memmax = 0 memmax 0 for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      } int i = 1; int i = 1; i 1 i < 10 i 10 i++ i++ i {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      } {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      } max = Math.max(max, height[i]) max Math.max(max, height[i]) Math.max Math max height[i] height i if (max == height[i]) {
          memmax = i;
        } max == height[i] max height[i] height i {
          memmax = i;
        } memmax = i memmax i second = max second max height[memmax] = -1 height[memmax] height memmax -1 1 max = height[0] max height[0] height 0 memmax = 0 memmax 0 for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      } int i = 1; int i = 1; i 1 i < 10 i 10 i++ i++ i {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      } {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      } max = Math.max(max, height[i]) max Math.max(max, height[i]) Math.max Math max height[i] height i if (max == height[i]) {
          memmax = i;
        } max == height[i] max height[i] height i {
          memmax = i;
        } memmax = i memmax i third = max third max out.println(first) out.println out first out.println(second) out.println out second out.println(third) out.println out third static class InputReader {
    public BufferedReader br;
    public StringTokenizer st;

    public InputReader(InputStream stream) {
      br = new BufferedReader(new InputStreamReader(stream));
    }

    public int nextInt() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Integer.parseInt(st.nextToken());
    }

    public long nextLong() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Long.parseLong(st.nextToken());
    }

    public String next() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return st.nextToken();
    }

    public double nextDouble() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Double.parseDouble(st.nextToken());
    }

  } InputReader public BufferedReader br; br public StringTokenizer st; st public InputReader(InputStream stream) {
      br = new BufferedReader(new InputStreamReader(stream));
    } InputReader {
      br = new BufferedReader(new InputStreamReader(stream));
    } br = new BufferedReader(new InputStreamReader(stream)) br new BufferedReader(new InputStreamReader(stream)) InputStream stream stream public int nextInt() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Integer.parseInt(st.nextToken());
    } nextInt {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Integer.parseInt(st.nextToken());
    } while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      } st == null || !st.hasMoreTokens() st == null st null !st.hasMoreTokens() st.hasMoreTokens() st.hasMoreTokens st {
        st = new StringTokenizer(br.readLine());
      } st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return Integer.parseInt(st.nextToken()); Integer.parseInt(st.nextToken()) Integer.parseInt Integer st.nextToken() st.nextToken st public long nextLong() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Long.parseLong(st.nextToken());
    } nextLong {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Long.parseLong(st.nextToken());
    } while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      } st == null || !st.hasMoreTokens() st == null st null !st.hasMoreTokens() st.hasMoreTokens() st.hasMoreTokens st {
        st = new StringTokenizer(br.readLine());
      } st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return Long.parseLong(st.nextToken()); Long.parseLong(st.nextToken()) Long.parseLong Long st.nextToken() st.nextToken st public String next() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return st.nextToken();
    } next {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return st.nextToken();
    } while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      } st == null || !st.hasMoreTokens() st == null st null !st.hasMoreTokens() st.hasMoreTokens() st.hasMoreTokens st {
        st = new StringTokenizer(br.readLine());
      } st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st public double nextDouble() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Double.parseDouble(st.nextToken());
    } nextDouble {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Double.parseDouble(st.nextToken());
    } while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      } st == null || !st.hasMoreTokens() st == null st null !st.hasMoreTokens() st.hasMoreTokens() st.hasMoreTokens st {
        st = new StringTokenizer(br.readLine());
      } st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return Double.parseDouble(st.nextToken()); Double.parseDouble(st.nextToken()) Double.parseDouble Double st.nextToken() st.nextToken st public class Main {
  static InputReader in;
  static PrintWriter out;
  
  static class Solution {
    void solve() throws IOException {
      int[] height = new int[10];
      int first;
      int second;
      int third;
      
      
      height[0] = in.nextInt();
      int max = height[0];
      int memmax = 0;
      
      for (int i = 1; i < 10; i++) {
        height[i] = in.nextInt();
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      first = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      second = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      third = max;
      
      out.println(first);
      out.println(second);
      out.println(third);
      
//      End solve()
    }
//    End Solution
}


  public static void main(String[] args) throws IOException {
    in = new InputReader(System.in);
    out = new PrintWriter(System.out);
    Solution solver = new Solution();
    solver.solve();
    out.close();
}


  static class InputReader {
    public BufferedReader br;
    public StringTokenizer st;

    public InputReader(InputStream stream) {
      br = new BufferedReader(new InputStreamReader(stream));
    }

    public int nextInt() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Integer.parseInt(st.nextToken());
    }

    public long nextLong() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Long.parseLong(st.nextToken());
    }

    public String next() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return st.nextToken();
    }

    public double nextDouble() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Double.parseDouble(st.nextToken());
    }

  }

} public class Main {
  static InputReader in;
  static PrintWriter out;
  
  static class Solution {
    void solve() throws IOException {
      int[] height = new int[10];
      int first;
      int second;
      int third;
      
      
      height[0] = in.nextInt();
      int max = height[0];
      int memmax = 0;
      
      for (int i = 1; i < 10; i++) {
        height[i] = in.nextInt();
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      first = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      second = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      third = max;
      
      out.println(first);
      out.println(second);
      out.println(third);
      
//      End solve()
    }
//    End Solution
}


  public static void main(String[] args) throws IOException {
    in = new InputReader(System.in);
    out = new PrintWriter(System.out);
    Solution solver = new Solution();
    solver.solve();
    out.close();
}


  static class InputReader {
    public BufferedReader br;
    public StringTokenizer st;

    public InputReader(InputStream stream) {
      br = new BufferedReader(new InputStreamReader(stream));
    }

    public int nextInt() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Integer.parseInt(st.nextToken());
    }

    public long nextLong() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Long.parseLong(st.nextToken());
    }

    public String next() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return st.nextToken();
    }

    public double nextDouble() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Double.parseDouble(st.nextToken());
    }

  }

} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
  static InputReader in;
  static PrintWriter out;
  
  static class Solution {
    void solve() throws IOException {
      int[] height = new int[10];
      int first;
      int second;
      int third;
      
      
      height[0] = in.nextInt();
      int max = height[0];
      int memmax = 0;
      
      for (int i = 1; i < 10; i++) {
        height[i] = in.nextInt();
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      first = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      second = max;
      
      height[memmax] = -1;
      max = height[0];
      memmax = 0;
      for (int i = 1; i < 10; i++) {
        max = Math.max(max, height[i]);
        if (max == height[i]) {
          memmax = i;
        }
      }
      third = max;
      
      out.println(first);
      out.println(second);
      out.println(third);
      
//      End solve()
    }
//    End Solution
}


  public static void main(String[] args) throws IOException {
    in = new InputReader(System.in);
    out = new PrintWriter(System.out);
    Solution solver = new Solution();
    solver.solve();
    out.close();
}


  static class InputReader {
    public BufferedReader br;
    public StringTokenizer st;

    public InputReader(InputStream stream) {
      br = new BufferedReader(new InputStreamReader(stream));
    }

    public int nextInt() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Integer.parseInt(st.nextToken());
    }

    public long nextLong() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Long.parseLong(st.nextToken());
    }

    public String next() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return st.nextToken();
    }

    public double nextDouble() throws IOException {
      while (st == null || !st.hasMoreTokens()) {
        st = new StringTokenizer(br.readLine());
      }
      return Double.parseDouble(st.nextToken());
    }

  }

}