let line
let arr = []


function getCalc(arr){
//     求最大递增序列的长度
    let dp = []
    let max = 1
//     遍历初始化dp
     for(let i = 0;i<arr.length;i++){
         dp[i] = 1
//       遍历j<i的数据,得到新的dp。新的dp为之前的[dp[max]] + 1
//          例如 [2 5 1 5 4 5 ]
//          5>2 dp[1] = dp[0] + 1   = 2
//          1 不大于2 也不大于5 dp[2] = 1
//          5大于2 大于1  dp[3] = 2
//          4大于2 大于1  dp[4] = 2
//          5大于2 大于1  大于4  dp[5] = 3  ==  dp[4] + 1
         for(let j = 0;j<i;j++){
             if(arr[i] > arr[j]){
//                  遍历得到最大的dp[j] 然后+1为最新的dp
                 dp[i] = Math.max(dp[i],dp[j] + 1);
                 max = Math.max(max,dp[i])
             }
         }
     }
    return max
}
while(line = readline()){
    arr.push(line)
    if(arr.length == 2){
       let dots = arr[1].split(' ').map(i=>parseInt(i));
       let count = getCalc(dots)
       console.log(count)
        arr= []
    }
}