func_code_string: #include <bits/stdc++.h>   #pragma warning(disable : 4786)   #pragma comment(linker,  /STACK:16777216 )   using namespace std;   int A[100005];   int I[100005];   int D[100005];   int n;   int max(int a, int b) {     if (a > b) return a;     return b;   }   int ABS(int a) {     if (a < 0) return a = a * -1;     return a;   }   int main() {     int i, j, len, res, cur, res1;     while (scanf( %d , &n) != EOF) {       for (i = 0; i < n; i++) {         scanf( %d , &A[i]);       }       I[0] = 1;       for (i = 1; i < n; i++) {         if (A[i] > A[i - 1]) {           I[i] = I[i - 1] + 1;         } else {           I[i] = 1;         }       }       D[n - 1] = 1;       for (i = n - 1; i >= 0; i--) {         if (A[i] < A[i + 1]) {           D[i] = D[i + 1] + 1;         } else {           D[i] = 1;         }       }       res = 1;       for (i = 0; i < n; i++) {         if (i == 0) {           if (i + 1 < n) res = max(res, D[i + 1] + 1);         } else if (i == n - 1) {           if (i - 1 >= 0) res = max(res, I[i - 1] + 1);         } else {           int r = I[i - 1] + D[i + 1];           if (ABS(A[i - 1] - A[i + 1]) > 1 && A[i + 1] > A[i - 1]) {             res = max(res, r + 1);           }           res = max(res, I[i - 1] + 1);           res = max(res, D[i + 1] + 1);         }       }       printf( %d n , res);     }     return 0;   }   