#include using namespace std; #define rep(i,n) for (int i = 0; i < (n); i++) template inline bool chmax(T &a, T b) {return ((a < b) ? (a = b, true) : (false));} template inline bool chmin(T &a, T b) {return ((a > b) ? (a = b, true) : (false));} typedef long long ll; typedef pair P; template bool next_combination(BidirectionalIterator first, BidirectionalIterator last, Compare comp, size_t r) { BidirectionalIterator subset = first + r; BidirectionalIterator src = subset; BidirectionalIterator dst = subset; if (first == last || first == subset || last == subset) { return false; } while (first != src) { src--; if (comp(*src, *(last - 1))) { while (*src >= *dst) { dst++; } iter_swap(src, dst); rotate(src + 1, dst + 1, last); rotate(subset, subset + (last - dst) - 1, last); return true; } } rotate(first, subset, last); return false; } template bool next_combination(BidirectionalIterator first, BidirectionalIterator last, size_t r) { using value_type = typename std::iterator_traits::value_type; return next_combination(first, last, std::less(), r); } int main() { ll n, k; cin >> n >> k; vector a(n); rep(i,n) cin >> a[i]; ll ans = 0, cnt = 0; vector per(n); rep(i,n) per[i] = i; do { ll sum = 0; rep(i,k) { sum += a[per[i]]; } if(sum % 998244353 <= sum % 998) { ans++; } cnt++; } while(next_combination(per.begin(),per.end(),k)); //cout << cnt << endl; cout << ans % 998 << endl; return 0; }