#include #include using namespace std; const int N = 200010, INF = 0x3f3f3f3f; int n, a[N], dp[N], ans; int main() { scanf("%d", &n); for (int i = 1; i <= n; ++i) scanf("%d", &a[i]); memset(dp, 0x3f, sizeof(dp)); dp[0] = 0; for (int i = 1; i <= n; ++i) { for (int j = i; j >= 0; --j) { if (j == i) { dp[j] = i; ans = i; } else { dp[j] = a[i] > dp[j] ? a[i] : INF; if (j >= 1) dp[j] = min(dp[j], dp[j - 1] + 1); } if (dp[j] != INF) { ans = j; } } } printf("%d\n", ans); return 0; }