#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6 + 5;
int n , a[N] , t[N] , ans = -1;
int get(int x[]){
int res = -1 , len = 1;
for(int i = 2; i <= n; i++){
if(x[i] > x[i - 1]) len++;
else{
res = max(res , len);
len = 1;
}
}
return max(res , len);
}
signed main(){
// freopen("text.in" , "r" , stdin);
// freopen("ans.txt" , "w" , stdout);
scanf("%lld" , &n);
for(int i = 1; i <= n; i++) scanf("%lld" , &a[i]);
int res = -1 , len = 1 , t[N] = {};
t[1] = 1;
for(int i = 2; i <= n; i++){
if(a[i] > a[i - 1]) t[++len] = i;
else{
if(res <= len){
res = len;
int b[N] = {};
memcpy(b , a , sizeof(a));
b[t[1]] = b[t[2]] - 1;
ans = max(ans , get(b));
memcpy(b , a , sizeof(a));
b[t[res]] = b[t[res - 1]] + 1;
ans = max(ans , get(b));
memcpy(b , a , sizeof(a));
b[t[1] - 1] = b[t[1]] - 1;
ans = max(ans , get(b));
memcpy(b , a , sizeof(a));
b[t[res] + 1] = b[t[res]] + 1;
ans = max(ans , get(b));
}
len = 1;
t[len] = i;
}
}
res = max(res , len);
int b[N] = {};
memcpy(b , a , sizeof(a));
b[t[1]] = b[t[2]] - 1;
ans = max(ans , get(b));
memcpy(b , a , sizeof(a));
b[t[res]] = b[t[res - 1]] + 1;
ans = max(ans , get(b));
memcpy(b , a , sizeof(a));
b[t[1] - 1] = b[t[1]] - 1;
ans = max(ans , get(b));
memcpy(b , a , sizeof(a));
b[t[res] + 1] = b[t[res]] + 1;
ans = max(ans , get(b));
printf("%lld" , ans);
return 0;
}
WA了两个点