from statistics import median

#import collections

#aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]

from fractions import gcd

from itertools import combinations # (string,3) 3回

from collections import deque

from collections import defaultdict

import bisect

#

#    d = m - k[i] - k[j]

#    if kk[bisect.bisect_right(kk,d) - 1] == d:

#

#

#

# pythonで無理なときは、pypyでやると正解するかも！！

#

#



import sys

sys.setrecursionlimit(10000000)

mod = 10**9 + 7

#mod = 9982443453

def readInts():

  return list(map(int,input().split()))

def I():

  return int(eval(input()))

n = I()

A = readInts()

A = sorted(A)

ma = A[-1]

mi = A[0]

for i in range(n-1):

    if abs(A[i] - ma/2) <= abs(mi - ma / 2):

        mi = A[i]

print((ma,mi))

#from statistics import median

#import collections

#aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]

#from fractions import gcd

#from itertools import combinations # (string,3) 3回

#from collections import deque

from collections import defaultdict

#import bisect

#

#    d = m - k[i] - k[j]

#    if kk[bisect.bisect_right(kk,d) - 1] == d:

#

#

#

# pythonで無理なときは、pypyでやると正解するかも！！

#

#



import sys

sys.setrecursionlimit(10000000)

mod = 10**9 + 7

#mod = 9982443453

def readInts():

  return list(map(int,input().split()))

def I():

  return int(eval(input()))

n = I()

A = readInts()

A = sorted(A)

MAX = A[-1]

MIN = A[0]

for i in range(1,n-1):

    if abs(MAX/2 - A[i]) <= abs(MAX/2 - MIN):

        MIN = A[i]

print((MAX,MIN))

from statistics import median

# import collections
# aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]
from fractions import gcd
from itertools import combinations  # (string,3) 3回
from collections import deque
from collections import defaultdict
import bisect

#
#    d = m - k[i] - k[j]
#    if kk[bisect.bisect_right(kk,d) - 1] == d:
#
#
#
# pythonで無理なときは、pypyでやると正解するかも！！
#
#
import sys

sys.setrecursionlimit(10000000)
mod = 10**9 + 7
# mod = 9982443453
def readInts():
    return list(map(int, input().split()))


def I():
    return int(eval(input()))


n = I()
A = readInts()
A = sorted(A)
ma = A[-1]
mi = A[0]
for i in range(n - 1):
    if abs(A[i] - ma / 2) <= abs(mi - ma / 2):
        mi = A[i]
print((ma, mi))

# from statistics import median
# import collections
# aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]
# from fractions import gcd
# from itertools import combinations # (string,3) 3回
# from collections import deque
from collections import defaultdict

# import bisect
#
#    d = m - k[i] - k[j]
#    if kk[bisect.bisect_right(kk,d) - 1] == d:
#
#
#
# pythonで無理なときは、pypyでやると正解するかも！！
#
#
import sys

sys.setrecursionlimit(10000000)
mod = 10**9 + 7
# mod = 9982443453
def readInts():
    return list(map(int, input().split()))


def I():
    return int(eval(input()))


n = I()
A = readInts()
A = sorted(A)
MAX = A[-1]
MIN = A[0]
for i in range(1, n - 1):
    if abs(MAX / 2 - A[i]) <= abs(MAX / 2 - MIN):
        MIN = A[i]
print((MAX, MIN))

-from statistics import median - +# from statistics import median -from fractions import gcd -from itertools import combinations  # (string,3) 3回 -from collections import deque +# from fractions import gcd +# from itertools import combinations # (string,3) 3回 +# from collections import deque -import bisect +# import bisect -ma = A[-1] -mi = A[0] -for i in range(n - 1): -    if abs(A[i] - ma / 2) <= abs(mi - ma / 2): -        mi = A[i] -print((ma, mi)) +MAX = A[-1] +MIN = A[0] +for i in range(1, n - 1): +    if abs(MAX / 2 - A[i]) <= abs(MAX / 2 - MIN): +        MIN = A[i] +print((MAX, MIN))