var
ans,n,k,i,j:longint;
t,x:array[0..10000] of longint;
procedure machine(c,d:longint);
var max,e,f:longint;
begin
if d<ans then
begin
if c>n then ans:=d
else begin
for f:=1 to k do
begin
x[f]:=x[f]+t[c];
if x[f]>d then machine(c+1,x[f])
else machine(c+1,d);
x[f]:=x[f]-t[c];
end;
end;
end;
end;
begin
readln(n,k);
for i:=1 to n do read(t[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if t[i]<t[j] then
begin
t[0]:=t[i];
t[i]:=t[j];
t[j]:=t[0];
end;
i:=1;
while i<=n do
begin
ans:=ans+t[i];
i:=i+k;
end;
machine(1,0);
writeln(ans);
end.
ans,n,k,i,j:longint;
t,x:array[0..10000] of longint;
procedure machine(c,d:longint);
var max,e,f:longint;
begin
if d<ans then
begin
if c>n then ans:=d
else begin
for f:=1 to k do
begin
x[f]:=x[f]+t[c];
if x[f]>d then machine(c+1,x[f])
else machine(c+1,d);
x[f]:=x[f]-t[c];
end;
end;
end;
end;
begin
readln(n,k);
for i:=1 to n do read(t[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if t[i]<t[j] then
begin
t[0]:=t[i];
t[i]:=t[j];
t[j]:=t[0];
end;
i:=1;
while i<=n do
begin
ans:=ans+t[i];
i:=i+k;
end;
machine(1,0);
writeln(ans);
end.