{
TASK:seq
LANG:Pascal
}

program seq;


var n: longword;
var k: byte;
var a: array [0.. 999999] of integer;
var used: array [0.. 999999] of boolean;

var norm_sbor: int64;
var full_sbor: int64;
var curr_sbor: int64;

procedure sbor_next(id: longword; l: byte);
var i: longword;
begin
   if l > k then
   begin
      full_sbor := full_sbor + norm_sbor - curr_sbor;
      exit;
   end;
   for i := id to n-1 do
   begin
      if not used[i] then
      begin
         used[i] := true;
         curr_sbor := curr_sbor+a[i];
         sbor_next(i, l+1);
         curr_sbor := curr_sbor-a[i];
         used[i] := false;
      end;
   end;
end;

procedure main();
var i: longword;
begin
   readln(n, k);
   norm_sbor := 0;
   for i := 0 to n-1 do
   begin
      read(a[i]);
      norm_sbor := norm_sbor+a[i];
      used[i] := false;
   end;
   full_sbor := 0;
   curr_sbor := 0;
   sbor_next(0, 1);
   writeln(full_sbor);
end;

begin
   main();
end.
