pole = [int(_) for _ in input().split()]
S = []
for x in pole:
# i = 0
# while i < len(S) and S[i] < x:
# i += 1
l,r = 0, len(S)
while (l < r):
s = (l+r)//2
if S[s] < x:
l = s+1
else:
r = s
if l == len(S):
S.append(x)
else:
S[l] = x
print(1+l)
cG9sZSA9IFtpbnQoXykgZm9yIF8gaW4gaW5wdXQoKS5zcGxpdCgpXQpTID0gW10KCmZvciB4IGluIHBvbGU6CiMJaSA9IDAKIwl3aGlsZSBpIDwgbGVuKFMpIGFuZCBTW2ldIDwgeDoKIwkJaSArPSAxCglsLHIgPSAwLCBsZW4oUykKCXdoaWxlIChsIDwgcik6CgkJcyA9IChsK3IpLy8yCgkJaWYgU1tzXSA8IHg6CgkJCWwgPSBzKzEKCQllbHNlOgoJCQlyID0gcwoJaWYgbCA9PSBsZW4oUyk6CgkJUy5hcHBlbmQoeCkKCWVsc2U6CgkJU1tsXSA9IHgKCXByaW50KDErbCkK