var i,j,n,w,ans:longint; a:array[0..100000]of longint; procedure qsort(l,r:longint); var i,j,t,m:longint; begin i:=l;j:=r; m:=a[(i+j) div 2]; repeat while a[i]>m do inc(i); while a[j]<m do dec(j); if i<=j then begin t:=a[i];a[i]:=a[j];a[j]:=t; inc(i);dec(j); end; until i>j; if i<r then qsort(i,r); if j>l then qsort(l,j); end; begin //assign(input,'group.in');reset(input); //assign(output,'group.out');rewrite(output); read(w,n); for i:=1 to n do read(a[i]); qsort(1,n); {for i:=1 to n do write(a[i],' ');} for i:=1 to n do begin for j:=n downto 1 do if (a[i]>0)and(a[j]>0) then if a[i]+a[j]<=w then begin inc(ans); a[i]:=0;a[j]:=0; break; end else begin inc(ans); a[i]:=0; break; end else if i=j then break; if i=j then break; end; write(ans); end. /************************************************************** Problem: 2269 User: admin Language: Pascal Result: Wrong Answer ****************************************************************/