{
Zadatak: proizvod
Jezik: Pascal
}
program proizvod;
  label
    100,200;
  var
    fin,fout               :text;
    code              :integer;
    m,n,i,ind,xnd,ynd,zx,zy,br1,br2,tmp,proiz:longint;
    a,x,y,z                :array[1..100000] of integer;
    c                      :char;
    s1                     :string[1];


 procedure Sort(l, r: Integer);
    var
      i, j, x, y          :integer;
    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(fin,'proizvod.in');reset(fin);
    assign(fout,'proizvod.out');rewrite(fout);

    read(fin,n); readln(fin,m);
    for i:=1 to n do
      begin
        read(fin,c);
        s1:=c;
        val(s1,a[i]);
      end;

    sort(1,n);

      ind:=n;
      xnd:=1;
      ynd:=1;

      for i:=1 to n+1 do
        begin
          x[i]:=-1;
          y[i]:=-1;
        end;


      x[xnd]:=a[ind];
      zx:=zx+x[xnd];
      xnd:=xnd+1;
      ind:=ind-1;
      if ind<1 then goto 200;
      y[ynd]:=a[ind];
      zy:=zy+y[ynd];
      ynd:=ynd+1;
      ind:=ind-1;
      if ind<1 then goto 200;


100:
      if (zx+a[ind]) -(zy+a[ind-1])< (zx+a[ind-1])-(zy+a[ind]) then
        begin

          x[xnd]:=a[ind];
          zx:=zx+x[xnd];
          xnd:=xnd+1;

          ind:=ind-1;
          if ind<1 then goto 200;

          y[ynd]:=a[ind];
          zy:=zy+1;
          ynd:=ynd+1;

          ind:=ind-1;
          if ind<1 then goto 200;
        end
      else
        begin
        y[ynd]:=a[ind];
        zy:=zy+y[ynd];
        ynd:=ynd+1;

        ind:=ind-1;
        if ind<1 then goto 200;

        x[xnd]:=a[ind];
        zx:=zx+x[xnd];
        xnd:=xnd+1;

        ind:=ind-1;
        if ind<1 then goto 200;
        end;



      if ind>0 then goto 100;
200:


    tmp:=1;
    for i:=xnd-1 downto 1 do
      begin
        br1:=br1+x[i]*tmp;
        tmp:=tmp*10;
      end;

    tmp:=1;
    for i:=ynd-1 downto 1 do
      begin
        br2:=br2+y[i]*tmp;
        tmp:=tmp*10;
      end;

    proiz:=br1*br2;

    for i:=1 to m do
      begin
        z[i]:=proiz mod 10;
        proiz:=proiz div 10;
      end;

   for i:=m downto 1 do write(fout,z[i]);










    close(fin);close(fout);
  end.
