func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long SIZE = 1e5;   long long n, a[SIZE], dp[SIZE][2][2];   void Max(long long &a, long long b) { a = max(a, b); }   signed main() {     cin >> n;     for (long long i = 0; i < n; i++) {       cin >> a[i];     }     for (long long i = 0; i < n; i++) {       for (long long j = 0; j < 2; j++) {         for (long long k = 0; k < 2; k++) {           dp[i][j][k] = 1;         }       }     }     for (long long i = 0; i < (n - 1); i++) {       if (a[i] < a[i + 1]) {         Max(dp[i + 1][0][0], dp[i][0][0] + 1);         Max(dp[i + 1][1][0], dp[i][1][0] + 1);       }       Max(dp[i + 1][1][1], dp[i][0][0] + 1);       if (i && (a[i + 1] - a[i - 1] > 1)) {         Max(dp[i + 1][1][0], dp[i][1][1] + 1);       }     }     long long ans = 1;     for (long long i = 0; i < n; i++) {       Max(ans, min(dp[i][0][0] + 1, n));       for (long long j = 0; j < 2; j++) {         Max(ans, dp[i][1][j]);       }     }     cout << ans << endl;     return 0;   }   