func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T>   void chkmax(T &x, T y) {     x = x > y ? x : y;   }   template <typename T>   void chkmin(T &x, T y) {     x = x > y ? y : x;   }   const int INF = 2139062143;   template <typename T>   void read(T &x) {     x = 0;     bool f = 1;     char ch;     do {       ch = getchar();       if (ch ==  - ) f = 0;     } while (ch >  9  || ch <  0 );     do {       x = x * 10 + ch -  0 ;       ch = getchar();     } while (ch >=  0  && ch <=  9 );     x = f ? x : -x;   }   template <typename T>   void write(T x) {     if (x < 0) x = ~x + 1, putchar( - );     if (x > 9) write(x / 10);     putchar(x % 10 +  0 );   }   const int N = 1000 + 5;   const int mod = 998244353;   int n, k, ans, a[N], f[N][N], s[N][N];   int main() {     read(n);     read(k);     for (int i = 1; i <= n; i++) read(a[i]);     sort(a + 1, a + n + 1);     a[0] = -INF;     for (int v = 1; v * (k - 1) <= a[n]; v++) {       f[0][0] = s[0][0] = 1;       int now = 0;       for (int i = 1; i <= n; i++) {         while (a[i] - a[now] >= v) now++;         f[i][0] = 0;         s[i][0] = (s[i - 1][0] + f[i][0]) % mod;         for (int j = 1; j <= k; j++) {           f[i][j] = s[now - 1][j - 1];           s[i][j] = (s[i - 1][j] + f[i][j]) % mod;         }       }       ans = (ans + 1ll * s[n][k]) % mod;     }     printf( %d n , ans);     return 0;   }   