#include <stdio.h>
#include <string.h>
#include <time.h>
int main() {
int filter[100]; //所有同学身高
int TxNumber; //同学数量
int MaxNumber = 0; //记录最大序列总人数
int LMax[3000]; //以最高同学为中间点,左侧最大同学数(不含最高同学本人)
int RMax[3000];
while (scanf("%d", &TxNumber) != EOF) { // 注意 while 处理多个 case
// 64 位输出请用 printf("%lld") to
memset(LMax, 0 , 3000);
memset(RMax, 0 , 3000);
for (int i = 0; i < TxNumber; i++) {
scanf("%d",&filter[i]);
}
//计算左侧最长序列
for (int i = 1; i < TxNumber; i++) {
for (int j = 0; j < i; j++) {
printf("LMax[%d] = %d\n",i,LMax[i]);
if ((filter[j] < filter[i]) && (LMax[i] < RMax[j] + 1)) {
LMax[i] = LMax[j] + 1;
printf("LMax[%d] = %d\n",i,LMax[i]);
}
}
}
//计算右侧
for (int i = TxNumber - 2; i >= 0; i--) {
for (int j = TxNumber - 1; j > i; j--) {
if ((filter[j] < filter[i]) && (LMax[i] < RMax[j] + 1)) {
RMax[i] = RMax[j] + 1;
}
}
}
//统计队列最长人数
for (int i = 0; i < TxNumber; i++) {
int tmp = LMax[i] + RMax[i] + 1;
if (MaxNumber < tmp) {
printf("LMax[%d] = %d\n",i,LMax[i]);
printf("RMax[%d] = %d\n",i,RMax[i]);
printf("tmp = %d\n",tmp);
MaxNumber = tmp;
}
}
printf("TxNumber = %d\n",TxNumber);
printf("MaxNumber = %d\n",MaxNumber);
}
return 0;
}