{
ZADATAK: proizvod
JEZIK: pascal
}
program Proizvod;
const
	MaxN = 1005;
type
	TNiz = array [0.. MaxN] of Integer;
var
	cif, a, b, c: TNiz;
  n, m: LongInt;
  ok: Boolean;
  f, g: Text;

  procedure InPut;
  var
  	i: LongInt;
    c: char;
  begin
  	Assign (f, 'proizvod.in');
    Reset (f);
    ReadLn (f, n, m);
    ok := False;
  	for i := 1 to n do begin
      Read (f, c);
      case c of
      	'1': Cif [i] := 1;
      	'2': Cif [i] := 2;
      	'3': Cif [i] := 3;
      	'4': Cif [i] := 4;
      	'5': Cif [i] := 5;
      	'6': Cif [i] := 6;
      	'7': Cif [i] := 7;
      	'8': Cif [i] := 8;
      	'9': Cif [i] := 9;
      	'0': Cif [i] := 0;
      end;
      if (c = '0') then
      	ok := True;
    end;
    Close (f);
  end;

  procedure QSort (l, r: LongInt);
  var
  	i, j, tmp, p: LongInt;
  begin
  	if (l < r) then begin
    	p := cif [(l + r) DIV 2];
      i := l; j := r;
      repeat
      	while (cif [i] > p) do Inc (i);
        while (cif [j] < p) do Dec (j);
        if (i <= j) then begin
        	tmp := cif [i]; cif [i] := cif [j]; cif [j] := tmp;
          Inc (i); Dec (j);
        end;
      until (i > j);
    	QSort (l, j);
      QSort (i, r);
    end;
  end;

  procedure Mull_BB (a, b: TNiz; var c: TNiz);
  var
  	i, j, tmp, p: LongInt;
  begin
  	FillChar (c, SizeOf (c), 0);
    c [0] := a [0] + b [0] + 1;
    for i := 1 to a [0] do begin
    	tmp := 0;
      for j := 1 to b [0] do begin
      	p := c [i + j - 1] + a [i] * b [j] + tmp;
        tmp := p DIV 10;
        c [i + j - 1] := p MOD 10;
        if (j = b [0]) then
        	c [i + j] := tmp;
      end;
    end;
    while (c [c [0]] = 0) and (c [0] > 1) do
    	Dec (c [0]);
  end;

  procedure Solve;
  var
  	i, j, tmp: LongInt;
  begin
  	QSort (1, n);
    a [0] := 0;
    b [0] := 0;
    if (n >= 4) or ((n < 4) and (not ok)) then begin
    	a [0] := 1;
      a [1] := cif [1];
      b [0] := 1;
      b [1] := cif [2];
	    for i := 3 to n do begin
      	if (i MOD 2 = 0) then begin
          Inc (a [0]);
	        a [a [0]] := cif [i];
        end
	      else begin
          Inc (b [0]);
	        b [b [0]] := cif [i];
        end;
      end;
    end
    else begin
    	b [0] := 1;
      b [1] := cif [2];
      a [0] := 2;
      a [1] := cif [1]; a [2] := cif [3];
    end;

    for i := 1 to a [0] DIV 2 do begin
    	tmp := a [i];
      a [i] := a [a [0] + 1 - i];
      a [a [0] + 1 - i] := tmp;
    end;
    for i := 1 to b [0] DIV 2 do begin
    	tmp := b [i];
      b [i] := b [b [0] + 1 - i];
      b [b [0] + 1 - i] := tmp;
    end;

    Mull_bb (a, b, c);
  end;

  procedure OutPut;
  var
    i: LongInt;
  begin
  	Assign (g, 'proizvod.out');
    ReWrite (g);
    for i := m downto 1 do
    	Write (g, c [i]);
    WriteLn (g);
    Close (g);
  end;

begin
	InPut;
  Solve;
  OutPut;
end.
