""" https://yukicoder.me/problems/no/1804 辞書順最大・最小のLISを見付ける """ import sys from sys import stdin #return lexicography minimum LIS def LISMIN(lis): import bisect dic = {} seq = [] for c in lis: ind = bisect.bisect_left(seq,c) if ind == len(seq): seq.append(c) if len(seq) == 1: dic[c] = None else: dic[c] = seq[-2] else: seq[ind] = c if ind == 0: dic[c] = None else: dic[c] = seq[ind-1] #print (seq) ret = [] v = seq[-1] while v != None: ret.append(v) v = dic[v] ret.reverse() return ret N = int(stdin.readline()) P = list(map(int,stdin.readline().split())) LM = LISMIN(P) P.reverse() for i in range(N): P[i] *= -1 RM = LISMIN(P) RM.reverse() for i in range(len(RM)): RM[i] *= -1 ans = [] for i in range(len(LM)): if LM[i] == RM[i]: ans.append(LM[i]) print (len(ans)) print (*ans)