{
ZADATAK: proizvod
JEZIK: pascal
}
Program proizvod;
type niz=array[0..100000] of longint;
var f:text;
    n,m,i,j,delj,br,uk,uk1,uk2:longint;
    B,A,Mark,S,Br1,Br2:niz;
    suma:double;
    z:char;

procedure komb(poz:longint);
  var s1,s2,i:longint;
      b1,b2:double;
  begin
    if poz>n
    then
      begin
        s1:=0;
        s2:=0;
        for i:=1 to n do
          if Mark[i]=1
          then
            s1:=s1+1
          else
            s2:=s2+1;
        if (s1>0) and (s2>0)
        then
          begin
            b1:=0;
            b2:=0;
            for i:=1 to n do
              if Mark[i]=1
              then
                b1:=b1*10+A[i]
              else
                b2:=b2*10+A[i];
            if b1*b2>suma
            then
              begin
                suma:=b1*b2;
                for i:=1 to n do
                  S[i]:=Mark[i];
              end
          end
      end
    else
      begin
        Mark[poz]:=1;
        komb(poz+1);
        Mark[poz]:=2;
        komb(poz+1)
      end
  end;

function step(br:longint):longint;
  var b1,i:longint;
  begin
    b1:=1;
    for i:=1 to br do
      b1:=b1*10;
    step:=b1
  end;

function min(a,b:longint):longint;
  begin
    if a<b
    then
      min:=a
    else
      min:=b
  end;

function bc(br:longint):longint;
  var uk,pom:longint;
  begin
    uk:=1;
    pom:=br;
    while pom div 10>0 do
      begin
        uk:=uk+1;
        pom:=pom div 10
      end;
    bc:=uk
  end;



begin
  assign(f,'proizvod.in');
  reset(f);
  read(f,n);
  readln(f,m);
  for i:=0 to 9 do
    B[i]:=0;
  for i:=1 to n do
    begin
      read(f,z);
      br:=ord(z)-ord('0');
      B[br]:=B[br]+1
    end;
  close(f);

  assign(f,'proizvod.out');
  rewrite(f);
  uk:=0;
  for i:=9 downto 0 do
    for j:=1 to B[i] do
      begin
        uk:=uk+1;
        A[uk]:=i;
      end;
  delj:=1;
  for i:=1 to m do
    delj:=delj*10;
  if n<=15
  then
    begin
      suma:=0;
      komb(1);
      uk1:=0;
      uk2:=0;
      for i:=n downto 1 do
        if S[i]=1
        then
          begin
            uk1:=uk1+1;
            Br1[uk1]:=A[i]
          end
        else
          begin
            uk2:=uk2+1;
            Br2[uk2]:=A[i]
          end;

      br:=0;
      for i:=1 to min(uk1,m) do
        for j:=1 to min(uk2,m) do
          if i+j-1<=m
          then
            br:=(br+Br1[i]*Br2[j]*step(i-1+j-1)) mod delj;
      if br<delj div 10
      then
        begin
          for i:=1 to (m-bc(br)) do
            write(f,'0');
          writeln(f,br)
        end
      else
        writeln(f,br);


    end
  else
    begin
      uk1:=0;
      uk2:=0;
      for i:=n downto 1 do
        if i mod 2=1
        then
          begin
            uk1:=uk1+1;
            Br1[uk1]:=A[i]
          end
        else
          begin
            uk2:=uk2+1;
            Br2[uk2]:=A[i]
          end;

      br:=0;
      for i:=1 to min(uk1,m) do
        for j:=1 to min(uk2,m) do
          if i+j-1<=m
          then
            br:=(br+Br1[i]*Br2[j]*step(i-1+j-1)) mod delj;
      if br<delj div 10
      then
        begin
          for i:=1 to (m-bc(br)) do
            write(f,'0');
          writeln(f,br)
        end
      else
        writeln(f,br);
    end;
  close(f);
end.
