你要AK了!
题号:NC201105
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

AK,全拼ALL KILL,意思是你即将做出全部的题目了。
当然,《刀剑神域》的设计者茅场晶彦是一个很喜欢为难玩家的人,在通关SAO第100层之前,他给出了下面的问题:
给定一个整数序列A1A2A3….An。求它的一个递增子序列,使子序列的元素个数尽量多,元素不一定要求连续。
如果你能做出来这道题目,你就可以顺利通关了,ACMer,能否打破茅场晶彦的阴谋就看你了!

输入描述:

第1行:1个整数n(1<=n<=5000),表示序列中元素的个数. 
第2行-n+1行:每行1个整数x(-1000<=x<=1000),第i+1行表示序列中的第i个元素。

输出描述:

第1行:1个整数k,表示最长上升子序列的长度。 
第2行:k个用单个空格分开的整数,表示找到了最长上升子序列。如果有多个长度等于k的子序列,则输出最靠前的1个。
示例1

输入

复制
8
1 3 2 4 3 5 4 6

输出

复制
5
1 3 4 5 6