var f:array [0..10,0..100,0..1] of longint;
i,j,m,n,min,max:longint; a:array [0..101] of longint;
function minx(x,b:longint):longint;
begin
if x<b then exit(x) else exit(b);
end;
function maxx(x,b:longint):longint;
begin
if x>b then exit(x) else exit(b);
end;
procedure dp;
var di,dj,dk,dl,temp:longint;
begin
for di:=1 to n do f[1,di,0]:=(f[1,di-1,0]+a[di]) mod 10;
for di:=1 to n do f[1,di,1]:=f[1,di-1,0];
for di:=2 to m do
for dj:=1 to n do BEGIN f[di,dj,0]:=maxlongint;
for dk:=1 to dj-1 do
begin
temp:=(f[1,dj,0]-f[1,dk,0]) mod 10;
if temp<0 then inc(temp,10);
f[di,dj,0]:=minx(f[di,dj,0],f[di-1,dk,0]*temp);
f[di,dj,1]:=maxx(f[di,dj,1],f[di-1,dk,1]*temp);
end;end;
end;
begin
assign(input,'game.in');
reset(input);
assign(output,'game.out');
rewrite(output);
readln(n,m); min:=maxlongint;max:=0; fillchar(a,sizeof(a),0);
for i:=1 to n do begin readln(a[i]);if a[i]<0 then inc(a[i],10);a[i+n]:=a[i];end;
for i:=1 to n do begin for j:=1 to 100 do a[j]:=a[j+1];
fillchar(f,sizeof(f),0);
dp;
if min>f[m,n,0] then min:=f[m,n,0];
if max<f[m,n,1] then max:=f[m,n,1];
end;
writeln(min);
writeln(max);
close(input);
close(output);
end.
wa======================00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
nobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobady