#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 2e5 + 5;

long long n, a[MaxN], d[MaxN];

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin >> n;
    for(long long i = 1; i <= n; i++)
        cin >> a[i];

    d[0] = LLONG_MIN;
    for(long long i = 1; i <= n; i++)
        d[i] = LLONG_MAX;

    long long ans = 0;

    for(long long i = 1; i <= n; i++)
    {
        long long pos = lower_bound(d + 1, d + ans + 2, a[i]) - d;
        d[pos] = a[i];
        ans = max(ans, pos);
    }

    cout << ans;
}