#include <algorithm>
#include <cstdio>
#include <iostream>
using namespace std;

int main(){
	while(1){
		long n, k;
		long a[100000];
		long b[100000]; //??????????´?
		
		scanf(" %ld %ld", &n, &k);
		if(n==0) break;
		for(long i=0; i<k; ++i) scanf(" %ld", &a[i]);
		sort(a, a+k);
		
		bool w=false;
		if(a[0]==0) w=true;
		
		for(long i=0; i<k-1; ++i) b[i]=a[i+1]-a[i]-1;

		//for(long i=0; i<k; ++i) printf("a[%ld]=%ld\n",i,a[i]);
		//for(long i=0; i<k-1; ++i) printf("b[%ld]=%ld\n",i,b[i]);

		long ans=0;		
		for(long i=0; i<k-1; ++i){
			if(i!=0 && b[i-1]==0) continue;
			
			if(w && i==0) continue;
			
			long now=i;
			long diff=1;
			if(w) diff--;
			
			while(now<k-1 && diff<2){
				if(diff+b[now]>1) break;
				else diff+=b[now++];	
			}	
			//printf("%ld :: %ld\n", i, now);
			
			long tmp=now-i+1;
			if(w && diff>0) tmp++;
			
			if(ans<tmp) ans=tmp;
			//printf("  %ld\n", ans);
		}
		
		printf("%ld\n", ans);
	}
}
### Prompt

Develop a solution in cpp to the problem described below:

problem

There are n cards with one integer from 1 to n and one blank card. Of these n + 1 cards, k cards are given, but 1 ≤ k ≤ n. You can write one integer from 1 to n on a blank card. I want to make a continuous sequence of integers as long as possible with just a given card.

Write a program that outputs the maximum length of a contiguous sequence of integers that can be made from a given card when the given card is entered.



input

The input consists of multiple datasets. Each dataset is given in the following format. The input ends on a line containing two zeros.

On the first line, two integers n (1 ≤ n ≤ 100000) and k (1 ≤ k ≤ n) are written in this order, separated by one blank. The following k line contains one integer. Written one by one, representing the integers written on the given k cards. Blank cards are represented by 0.

Of the scoring data, 40% of the points are 1 ≤ n ≤ 1000, 1 ≤ k ≤ 500, 20% of the points are 1 ≤ n ≤ 60000, 1 ≤ k ≤ 50000. Satisfy 1 ≤ n ≤ 100000, 1 ≤ k ≤ 100000.

The number of datasets does not exceed 5.

output

Outputs an integer on one line for each dataset.

Examples

Input

7 5
6
2
4
7
1
7 5
6
2
0
4
7
0 0


Output

2
4


Input

None


Output

None

### Response

```cpp
#include <algorithm>
#include <cstdio>
#include <iostream>
using namespace std;

int main(){
	while(1){
		long n, k;
		long a[100000];
		long b[100000]; //??????????´?
		
		scanf(" %ld %ld", &n, &k);
		if(n==0) break;
		for(long i=0; i<k; ++i) scanf(" %ld", &a[i]);
		sort(a, a+k);
		
		bool w=false;
		if(a[0]==0) w=true;
		
		for(long i=0; i<k-1; ++i) b[i]=a[i+1]-a[i]-1;

		//for(long i=0; i<k; ++i) printf("a[%ld]=%ld\n",i,a[i]);
		//for(long i=0; i<k-1; ++i) printf("b[%ld]=%ld\n",i,b[i]);

		long ans=0;		
		for(long i=0; i<k-1; ++i){
			if(i!=0 && b[i-1]==0) continue;
			
			if(w && i==0) continue;
			
			long now=i;
			long diff=1;
			if(w) diff--;
			
			while(now<k-1 && diff<2){
				if(diff+b[now]>1) break;
				else diff+=b[now++];	
			}	
			//printf("%ld :: %ld\n", i, now);
			
			long tmp=now-i+1;
			if(w && diff>0) tmp++;
			
			if(ans<tmp) ans=tmp;
			//printf("  %ld\n", ans);
		}
		
		printf("%ld\n", ans);
	}
}
```