### 问题描述
最长上升子序列(Longest Increasing Subsequence),简称 LIS,指的是一个序列中最长的一个子序列,满足其单调递增。
例如,对于一个序列 a1,a2,a3,a4,...,ai,...,an,存在一个序列 b1,b2,...,bm,满足:
那么我们称 {ab1,ab2,...,abm} 为 {ai} 的一个上升子序列。
最长的上升子序列就是最长(元素数量最多)的一个上升子序列。
小蓝学到了这个知识点,并且学会一些用来计算 LIS 的常见算法。
于是小蓝向邻居小桥炫耀他学到的新知识,但是小桥显然不会让小蓝如此得意,于是他提出了一个新的问题:
给定一个长度为 n 的序列 {ai},小蓝可以选择其中的一个位置,修改为 0∼10100 中的任何一个整数。具体来说,小蓝可以选择一个位置 p(p∈[1,n]),将 ap 重新赋值为 0∼10100 中的任意一个整数。请问修改过后,最长上升子序列的长度是多少?
小蓝看到这个问题,两眼一抹黑,于是请你帮他解决这个问题。
第一行输入一个整数 n。
第二行输入 n 个整数 a1,a2,...,ai,...,an,用来表示序列 a 的每个值。
输出一个整数,表示修改后的最长上升子序列长度。
5
2 5 4 3 7
4
修改 3 为 5,得到 2,5,4,5,7,得到最长上升子序列为 2,4,5,7。
1≤n≤5×103,0≤ai≤109。