DZY has a sequence a, consisting of n integers.

We'll call a sequence ai, ai + 1, ..., aj (1 ≤ i ≤ j ≤ n) a subsegment of the sequence a. The value (j - i + 1) denotes the length of the subsegment.

Your task is to find the longest subsegment of a, such that it is possible to change at most one number (change one number to any integer you want) from the subsegment to make the subsegment strictly increasing.

You only need to output the length of the subsegment you find.

Input

The first line contains integer n (1 ≤ n ≤ 105). The next line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 109).

Output

In a single line print the answer to the problem — the maximum length of the required subsegment.

Examples

Input

6
7 2 3 1 5 6


Output

5

Note

You can choose subsegment a2, a3, a4, a5, a6 and change its 3rd element (that is a4) to 4.
import java.io.*;
import java.lang.*;
import java.util.*;
import java.text.*;


public class Main {
	

	public static void main(String[] args) throws IOException {

		//BufferedReader cin = new BufferedReader(new FileReader("te.txt"));
		 BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
	
		
		String line;
		StringTokenizer st;
		
		line = cin.readLine();
		st = new StringTokenizer(line);
		int n = Integer.parseInt(st.nextToken());
		
		int[] list= new int[n];
		int[] upd=new int[n];
		
		int t;
		line = cin.readLine();
		st = new StringTokenizer(line);
		for(int i=0;i<n;i++){
			t=Integer.parseInt(st.nextToken());
			list[i]=t;
			upd[i]=t;
		}
		int ans=1;
		int tmp=1;
		int first=-1;
		boolean toobig=false;
		//int min=list[0];//min val for cur i to be
		//int bad=0;
		for(int i=1;i<n;i++){
			if(upd[i]>upd[i-1])tmp++;
			else{//this one is smaller than previous
				
				if(first>-1){//changed already
					ans=Math.max(ans, tmp);
					if(toobig){
						tmp=i-first-1;
						toobig=false;
					}
					else{
						tmp=i-first;
					}
					first=-1;
					
				}
				//else{//change i or i-1
					if((i==1&&upd[i]>0)||upd[i]>list[i-2]+1){//i-1 ele is too big
						first=i-1;
						upd[i-1]=upd[i]-1;
						tmp++;
						toobig=true;
					}
					else{//this one too small
						if(i==n-1){
							tmp++;
						}
						else if(upd[i+1]>list[i-1]+1){//change this one
							first=i;
							upd[i]=upd[i-1]+1;
							tmp++;
						}
						else{//start here or prev one!
							//Mistake!!!! can change i-1 to be smaller than i
							
							tmp++;//length plus one(if change this)
							ans=Math.max(ans, tmp);
							tmp=1;
							if(upd[i]>0){//change prev to smaller
								first=i-1;
								upd[i-1]=upd[i]-1;
								tmp++;
								toobig=true;
							}
							
						}
					//}
					
					
				}
				
			}
		}
		ans=Math.max(ans, tmp);

		System.out.println(ans);

		cin.close();
	}


}