import java.util.List;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
class t{
public static void main(String[] args) {
// 导弹
List<Integer> list = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
String s = null;
while (!(s = scanner.nextLine()).equals("")) {
String[] str = s.split(" ");
for (int i = 0; i < str.length; i++) {
list.add(Integer.parseInt(str[i]));
}
}
int n = list.size();
List<Integer> f = new ArrayList<>();
f.add(list.get(0));
// 最长非递增
// 贪心+二分
for (int i = 1; i < n; i++) {
if (f.get(f.size() - 1) >= list.get(i)) {
// 直接加
f.add(list.get(i));
} else {
// 拿掉最先不满足
int l = 0;
int r = f.size() - 1;
while (l < r) {
int mid = l + (r - l) / 2;
if (f.get(mid) >= list.get(i)) {
l = mid + 1;
} else {
r = mid;
}
}
f.set(l, list.get(i));
}
}
System.out.println(f.size());
}
}