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