#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+1;
int l[N],r[N];//l[i]表示以i为结尾的严格上升的子序列的大小 r[i]表示以i为开头的严格上升的子序列的大小
int n;
int a[N];
signed main()
{
cin>>n;
l[1]=r[n]=1;
for(int i=1; i<=n; i++)
{
cin>>a[i];
}
for(int i=2; i<=n; i++)
{
if(a[i]>a[i-1])
l[i]=l[i-1]+1;//l[i]可以由l[i-1]得来,r[i]同理
else
l[i]=1;
}
for(int i=n; i>=1; i--)
{
if(a[i]<a[i+1])
r[i]=r[i+1]+1;
else
r[i]=1;
}
int ans=1;
for(int i=1; i<=n; i++)
{
if(a[i+1]-a[i-1]>=2)//可以同过改变a[i]来使x~i-1与i+1~y相结合(x为l[i]的左节点,y为r[i]的右节点)
ans=max(ans,l[i-1]+1+r[i+1]);//更新ans
ans=max(ans,max(l[i]+1,r[i]+1));//ans也可以是l[i]或r[i]在加上一个改变的数字
//坑点!!!(血的教训)不要忘了+1!!!(因为l[i]或r[i]为严格上升的子序列,所以可以再加上一个改变的数字)
}
cout<<ans<<endl;//输出
}