let rec power ( * ) e m n =
  if n <= 0 then e
  else power ( * ) (if n land 1 = 0 then e else m * e) (m * m) (n lsr 1)

let m = 1000000007
let ( +^ ) x y = (x + y) mod m
let ( *^ ) x y = (x * y) mod m
let ( -^ ) x y = x +^ (m - y)

let perm n k =
  Array.fold_left ( *^ ) 1 @@
  Array.init k @@ ( +^ ) (n - k + 1)
let comb n k = power ( *^ ) (perm n k) (perm k k) (m - 2)
let repcomb n k = comb (n + k - 1) k

let () = Scanf.scanf "%d %d\n" @@ fun n k ->
  let as_ = Array.init n @@ fun _ -> Scanf.scanf "%d " @@ fun a -> a in
  Array.sort compare as_;
  let combs = Array.make (n + 1) 0 in
  (* combs.(i) = comb i (k - 1) *)
  combs.(k - 1) <- 1;
  for i = k - 1 to n - 1 do
    combs.(i + 1) <- combs.(i) *^ (i + 1) *^ power ( *^ ) 1 (i - k + 2) (m - 2)
  done;
  Printf.printf "%d\n" @@
  Array.fold_left ( +^ ) 0 @@
  Array.init n @@ fun i ->
    (m +^ as_.(i)) *^ (combs.(i) -^ combs.(n - i - 1))

