output_description: Print a_i and a_j that you selected, with a space in between.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      n
      a_1 a_2 ... a_n
attempt: import math, string, itertools, fractions, heapq, collections, re, array, bisect, sys, random, time, copy, functools
  
  sys.setrecursionlimit(10**7)
  inf = 10**20
  eps = 1.0 / 10**15
  mod = 10**9 + 7
  
  
  def LI():
      return [int(x) for x in sys.stdin.readline().split()]
  
  
  def LI_():
      return [int(x) - 1 for x in sys.stdin.readline().split()]
  
  
  def LF():
      return [float(x) for x in sys.stdin.readline().split()]
  
  
  def LS():
      return sys.stdin.readline().split()
  
  
  def I():
      return int(sys.stdin.readline())
  
  
  def F():
      return float(sys.stdin.readline())
  
  
  def S():
      return input()
  
  
  def pf(s):
      return print(s, flush=True)
  
  
  def main():
      n = I()
      a = LI()
      t = max(a)
      m = -1
      r = -1
      for c in a:
          if min(c, t - c) > m and c != t:
              r = c
              m = min(c, t - c)
  
      return "{} {}".format(t, r)
  
  
  print(main())
  
problem_description: Statement
  
  Let {\rm comb}(n,r) be the number of ways to choose r objects from among n
  objects, disregarding order. From n non-negative integers a_1, a_2, ..., a_n,
  select two numbers a_i > a_j so that {\rm comb}(a_i,a_j) is maximized. If
  there are multiple pairs that maximize the value, any of them is accepted.
samples: [{"input": "5\n    6 9 4 2 11", "output": "11 6\n    \n\n\\rm{comb}(a_i,a_j) for each possible selection is as follows:\n\n  * \\rm{comb}(4,2)=6\n  * \\rm{comb}(6,2)=15\n  * \\rm{comb}(6,4)=15\n  * \\rm{comb}(9,2)=36\n  * \\rm{comb}(9,4)=126\n  * \\rm{comb}(9,6)=84\n  * \\rm{comb}(11,2)=55\n  * \\rm{comb}(11,4)=330\n  * \\rm{comb}(11,6)=462\n  * \\rm{comb}(11,9)=55\n\nThus, we should print 11 and 6.\n\n* * *"}, {"input": "2\n    100 0", "output": "100 0"}]