https://www.acmicpc.net/problem/14002
import sys
n = int(sys.stdin.readline())
nums=list(map(int, sys.stdin.readline().split()))
dp = [1]*n
for i in range(n-1):
for j in range(i+1, n): # 현재 수 뒤를 탐색
if nums[j]>nums[i]: # 현재 수보다 더 큰 수가 나오면
dp[j]=max(dp[i]+1, dp[j]) # dp리스트에서 현재까지 나온 수와 새로 더한 수중 최댓값 저장
m=max(dp)
print(m)
idx = dp.index(m)
res=[]
for i in range(idx, -1, -1): # 가장 큰 수부터 거꾸로 탐색해 나간다
if dp[i]==m:
res.append(nums[i])
m-=1
res.reverse()
for i in res:
print(i, end=' ')