#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;
}
