#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;//输出
}