#include <stdio.h>
int max(int a, int b) {
return a > b ? a : b;
}
int lengthOfLIS(int nums[], int n) {
int dp[n];
int max_length = 1;
// 初始化dp数组,每个元素至少为1(即包含自身)
for (int i = 0; i < n; i++) {
dp[i] = 1;
}
// 动态规划计算最长递增子序列长度
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
if (nums[i] > nums[j]) {
dp[i] = max(dp[i], dp[j] + 1);
max_length = max(max_length, dp[i]);
}
}
}
return max_length;
}
int main() {
int n;
scanf("%d", &n);
int nums[n];
// 读取数组
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
// 计算最长递增子序列长度并输出
printf("%d\n", lengthOfLIS(nums, n));
return 0;
}