uses math;
var
f:array[0..200001,0..20] of longint;
i,j,n,k,t:longint;
sum:int64;
function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end;
function min(a,b:longint):longint;
begin
if a<b then exit(a) else exit(b);
end;
procedure init;
begin
assign(input,'rmq.in');
assign(output,'rmq.out');
reset(input);
rewrite(output);
end;
procedure endl;
begin
close(input);close(output);
end;
begin
//init;
readln(n,k);
for i:=1 to n do read(f[i,0]);
f[n+1,0]:=f[n,0];f[0,0]:=f[1,0];
k:=trunc(ln(k)/ln(2));
for j:=1 to k do
for i:=n downto 1 do
f[i,j]:=max(f[i,j-1],f[i+2**(j-1)+1,j-1]);
for i:=1 to n do //writeln(f[i,k]);
inc(sum,f[i,k]);
writeln(sum);
sum:=0;
for j:=1 to k do
for i:=1 to n do
f[i,j]:=min(f[i,j-1],f[i+2**(j-1)-1,j-1]);
for i:=1 to n do inc(sum,f[i,k]);
writeln(sum);readln;readln;readln;readln;
//endl;
end.
var
f:array[0..200001,0..20] of longint;
i,j,n,k,t:longint;
sum:int64;
function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end;
function min(a,b:longint):longint;
begin
if a<b then exit(a) else exit(b);
end;
procedure init;
begin
assign(input,'rmq.in');
assign(output,'rmq.out');
reset(input);
rewrite(output);
end;
procedure endl;
begin
close(input);close(output);
end;
begin
//init;
readln(n,k);
for i:=1 to n do read(f[i,0]);
f[n+1,0]:=f[n,0];f[0,0]:=f[1,0];
k:=trunc(ln(k)/ln(2));
for j:=1 to k do
for i:=n downto 1 do
f[i,j]:=max(f[i,j-1],f[i+2**(j-1)+1,j-1]);
for i:=1 to n do //writeln(f[i,k]);
inc(sum,f[i,k]);
writeln(sum);
sum:=0;
for j:=1 to k do
for i:=1 to n do
f[i,j]:=min(f[i,j-1],f[i+2**(j-1)-1,j-1]);
for i:=1 to n do inc(sum,f[i,k]);
writeln(sum);readln;readln;readln;readln;
//endl;
end.