#include #include #include #include #include #include #include #include #define rep(i, n) for (int i = 0; i < (n); i++) #define rrep(i, n) for (int i = (n)-1; i >= 0; i--) using namespace std; typedef long long int lli; int main() { int n; cin >> n; int a[3004]; vector> p; rep(i, n) { cin >> a[i]; p.push_back(make_pair(a[i], i)); } sort(p.begin(), p.end()); int dp[3004][2] = {}; rep(i, n) { for (int j = p[i].second + 1; j < n; j++) { if (a[j] > a[p[i].second]) dp[j][0] = max(dp[p[i].second][1] + 1, dp[j][0]); } for (int j = p[i].second - 1; j >= 0; j--) { if (a[j] > a[p[i].second]) dp[j][1] = max(dp[p[i].second][0] + 1, dp[j][1]); } } int ans = 0; rep(i, n) rep(j, 2) ans = max(dp[i][j], ans); cout << ans + 1 << endl; }