import java.util.Arrays;
import java.util.Scanner;
public class 纪念品分组 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int m=sc.nextInt();//每组最大价格
int n=sc.nextInt();//种类
int []arr=new int[n+1];
for (int i=1;i<=n;i++) arr[i]=sc.nextInt();
Arrays.sort(arr,1,n+1);//排序
for (int i=1;i<=n;i++) System.out.print(arr[i]+" ");
int l=1,r=n,sum=0;
while (r>=l) {
if (arr[r] + arr[l] <= m) l += 1;//满足条件左端点右移
sum += 1;//组数+1
r--;//右端点左移
}
System.out.println(sum);
}
}
import java.util.Scanner;
public class 删数问题 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String ss=sc.next();//字符串表示输入的高精度整数
int k=sc.nextInt();//删除k个数
k=ss.length()-k;//保留的个数
int l=-1,y=0;//l记录左指针,y记录是否出现有效数字
for (int i=0;i<k;i++){
int min=10;//最大的整数为9
for (int j=l+1;j<=ss.length()-k+i;j++){
if (ss.charAt(j)-'0'<min){
l=j;//更改左指针
min=ss.charAt(j)-'0';//更改最小值
}
}
if (min!=0) y=1;//判定是否出现有效数字
if (y!=0||i+1>=k) System.out.print(min);
}
}
}
import java.util.Arrays;
import java.util.Scanner;
public class 分组 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int []arr=new int[n+1];
arr[n]=1010101010;
for (int i=0;i<n;i++)arr[i]=sc.nextInt();
Arrays.sort(arr);
int [][]brr=new int[n+10][2];
int x=0;
for (int i=0;i<n;i++){
brr[x][0]=arr[i];
brr[x][1]++;
if (arr[i]!=arr[i+1])x++;
}
int l=0;
int min=100010;
int count=0;
for (int i=0;i<x;i++){
brr[i][1]--;//数值出现次数-1
if (brr[i][1]==0) l=i+1;//说明该数出现次数已经没了
if (brr[i][0]+1==brr[i+1][0]){//判断是否与后面连续
if (brr[i][1]!=brr[i+1][1]) {//前面的数剩余次数不大于连续的后面数字次数
count++;
}else{
count++;
i=l-1;
min=Math.min(min,count);
count=0;
}
}else{
count++;
i=l-1;
min=Math.min(min,count);
count=0;
}
}
System.out.println(min);
}
}