#include using namespace std; typedef unsigned long long ul; typedef signed long long ll; ul over = 1000000007; int main(void) { cin.tie(0); ios::sync_with_stdio(false); cout << fixed; ll n; cin >> n; ll a[n]; for (ll i = 0; i < n; ++i) cin >> a[i]; ll dp[n]; ll Inf = n+1; for (ll i = 0; i < n; ++i) dp[i] = Inf; for (ll i = 0; i < n; ++i) { *lower_bound(dp, dp+n, a[i]) = a[i]; } cout << n - (lower_bound(dp, dp+n, Inf) - dp) << endl; return 0; }