#include <iostream>
#include <vector>
#include <string>
#include <cstring>
#include <math.h>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector <int> a;
vector <int> d;
for (int i = 0; i < n; i++) {
int k;
cin >> k;
a.push_back(k);
}
for (int i = 0; i < n; i++) {
d.push_back(1);
for (int j = 0; j < i; j++) {
if (a[j] < a[i]) {
d[i] = max(d[i], d[j] + 1);
}
}
}
sort(d.begin(), d.end());
cout << d[n - 1];
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y3N0cmluZz4gCiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxhbGdvcml0aG0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglpbnQgbjsKCWNpbiA+PiBuOwoJdmVjdG9yIDxpbnQ+IGE7Cgl2ZWN0b3IgPGludD4gZDsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJaW50IGs7CgkJY2luID4+IGs7CgkJYS5wdXNoX2JhY2soayk7Cgl9Cglmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewoJCWQucHVzaF9iYWNrKDEpOwoJCWZvciAoaW50IGogPSAwOyBqIDwgaTsgaisrKSB7CgkJCWlmIChhW2pdIDwgYVtpXSkgewoJCQkJZFtpXSA9IG1heChkW2ldLCBkW2pdICsgMSk7CgkJCX0KCQl9Cgl9Cglzb3J0KGQuYmVnaW4oKSwgZC5lbmQoKSk7Cgljb3V0IDw8IGRbbiAtIDFdOwp9