import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] s = in.nextLine().split(" ");
int[] arr = Arrays.stream(s).mapToInt(Integer::valueOf).toArray();
// 最长上升子序列的长度LIS-二分查找
int[] tmp = new int[arr.length];
int tail = 0;
for (int n : arr) {
int l = 0, r = tail; // 左闭右开找左边界
while (l < r) {
int m = l + (r - l) / 2;
if (tmp[m] < n) {
l = m + 1;
} else {
r = m;
}
}
tmp[l] = n;
if (l == tail) tail++;
}
System.out.println(tail);
}
}
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String[] str = scanner.nextLine().split(" ");
//int len = str.length;
int[] arr = new int[str.length];
for(int i=0;i<str.length;i++){
arr[i]=Integer.parseInt(str[i]);
}
int max = lengthOfLIS(arr);
System.out.println(max);
}
static int lengthOfLIS(int[] arr){
//数组定义:dp[i]为从0到i的最长递增子序列值,base case :自身并入计算结果中
int[] dp = new int[arr.length];
Arrays.fill(dp,1);
int max = arr[0];
for(int i = 0;i < arr.length; i++){
for(int j = 0; j <= i; j++){
if(arr[i] > arr[j]){
dp[i] = Math.max(dp[j] + 1, dp[i]);
}
}
max = Math.max(dp[i], max);
}
return max;
}
} nums = list(map(int,input().split())) l,r = 0,0 res = 1 for i in range(len(nums)-1): if nums[i+1]>nums[i]: r +=1 res = max(res,r-l+1) else: r+=1 l+=1 print(res)