{
ZADATAK: proizvod
JEZIK: PASCAL
}
program proizvod;
var m,n,i,j,gde,maxb,maxc,r,q,rezultat:longint; znak:char; a:array[1..10000]of shortint; b,c:array[1..5000]of shortint;
prvi,drugi,pom,d,prenos,s:longint;  pom2:string; greska:integer; v:array[1..1000] of shortint;
nadjen:boolean; t,f:text;
procedure Sort(l, r: longint);
var
	i, j ,x,y: longint;
begin
	i := l; j := r; x := a[(l+r) DIV 2];
	repeat
		while a[i] < x do i := i + 1;
		while x < a[j] do j := j - 1;
		if i <= j then
		begin
			y := a[i]; a[i] := a[j]; a[j] := y;
			i := i + 1; j := j - 1;
		end;
	until i > j;
	if l < j then Sort(l, j);
	if i < r then Sort(i, r);
end;
begin
assign(t,'proizvod.in');
reset(t);
assign(f,'proizvod.out');
rewrite(f);
read(t,n,m);
readln(t);
for i:=1 to n do
 begin
	read(t,znak);
	val(znak,a[i],greska);
 end;
sort(1,n);
gde:=n;
j:=0;
if n>2 then  begin for i:=1 to n-2 do
 begin
	if i mod 2=1 then begin j:=j+1; b[j]:=a[gde]; gde:=gde-1; maxb:=maxb+1; end
							 else begin c[j]:=a[gde];  gde:=gde-1; maxc:=maxc+1; end;
 end;
maxb:=maxb+1; b[maxb]:=a[1];
maxc:=maxc+1; c[maxc]:=a[2];
end else begin maxb:=1; b[1]:=a[2]; maxc:=1; c[1]:=a[1]; end;
if maxb+maxc>m then
 begin
	if (maxb>=m) then
	if (maxc>=m) then
	 begin
		for i:=maxb downto maxb-m+1 do
		begin s:=maxb-i; prenos:=0;
		 for j:=maxc downto maxc-m+1 do begin
			s:=s+1; v[s]:=v[s]+prenos+(b[i]*c[j]);
			if v[s]>=10 then begin prenos:=v[s] div 10; v[s]:=v[s] mod 10; end;
			end; end;
			end
	 else
		 begin
		for i:=maxb downto maxb-m+1 do
		begin s:=maxb-i; prenos:=0;
		 for j:=maxc downto 1 do begin
			s:=s+1; v[s]:=v[s]+prenos+(b[i]*c[j]);
			if v[s]>=10 then begin prenos:=v[s] div 10; v[s]:=v[s] mod 10; end;
			end; end;
			end;
 for i:=m downto 1 do
 write(f,v[i]);
end
else
 begin
	nadjen:=false; i:=maxb+1;
	if ((c[maxc]=0) and (maxc=1)) then begin
	while nadjen=false do
	 begin
		i:=i-1; if b[i]<>0 then nadjen:=true; end;
		pom:=b[i]; b[i]:=c[maxc]; c[maxc]:=pom; end;
	prvi:=b[maxb];
	pom:=1;
	for i:=1 to maxb-1 do
	 begin
	 pom:=pom*10;
	 prvi:=prvi+b[i]*pom;
	 end;
	drugi:=c[maxc];
	pom:=1;
	for i:=1 to maxc-1 do
	 begin
		pom:=pom*10;
		drugi:=drugi+c[i]*pom;
	 end;
	rezultat:=prvi*drugi;
	str(rezultat,pom2);
	d:=length(pom2);
	if d<m then d:=m-d;
	for i:=1 to d do
		write(f,'0');
	write(f,rezultat);
 end;
 close(f);
 close(t);
end.
