#include <bits/stdc++.h>
using namespace std;
long long int table[1001][1001];
int n, k;
int Prev[20000];
long long int arr[20000];
long long int cumm[200000];
void start(long long int gap) {
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < k; j++) table[i][j] = -1;
    table[i][0] = 1;
  }
  int ptr = -1;
  for (int i = 0; i < n; i++) {
    while (ptr + 1 < i && arr[i] - arr[ptr + 1] >= gap) {
      ptr++;
    }
    Prev[i] = ptr;
  }
}
void calc(int layer) {
  long long int ans = 0;
  int ptr = -1;
  for (int i = 0; i < n; i++) {
    while (ptr < Prev[i]) {
      ans += table[ptr + 1][layer - 1];
      ans %= 998244353;
      ptr++;
    }
    table[i][layer] = ans;
  }
}
void fill(long long int gap) {
  start(gap);
  for (int i = 1; i < k; i++) {
    calc(i);
  }
  cumm[gap] = 0;
  for (int i = 0; i < n; i++) {
    cumm[gap] += table[i][k - 1];
    cumm[gap] %= 998244353;
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  srand(time(NULL));
  scanf("%d %d", &n, &k);
  for (int i = 0; i < n; i++) {
    scanf("%lld", &arr[i]);
  }
  sort(arr, arr + n);
  long long int RES = 0;
  for (int i = 0; i < 100001; i++) {
    if (i * (k - 1) <= 100000) {
      fill(i);
    }
  }
  for (int i = 0; i < 100000; i++) {
    RES += (cumm[i] - cumm[i + 1]) * i;
    RES %= 998244353;
    RES += 998244353;
    RES %= 998244353;
  }
  printf("%lld\n", RES);
  return 0;
}
