import java.util.*;
public class Main{
public static void main(String[] args) {
int[] nums={1,-1,2,-3,4,-5,6,-7};
int len=nums.length;
int[] maxNum=new int[len+1];
maxNum[1]=nums[0];
maxNum[0]=Integer.MIN_VALUE;
int maxLength=1;
for(int i=1;i<len;i++){
int temp=1;
int start=0;
int end=maxLength;
if(nums[i]>maxNum[end]){
maxLength=end+1;
maxNum[maxLength]=nums[i];
continue;
}
while(start<=end){
int mid=start+(end-start)/2;
if(maxNum[mid]>nums[i]){
end=mid-1;
}else if(maxNum[mid]<nums[i]){
start=mid+1;
}else{
break;
}
}
if(start<=end){
continue;
}else if(nums[i]>maxNum[end] && nums[i]<maxNum[start])
{
temp=end+1;
maxNum[temp]=nums[i];
}
}
System.out.println(maxLength);
}
}