//(・ω・) #include #include // cout, endl, cin #include // string, to_string, atoi #include // vector #include // min, max, swap, sort, reverse, lower_bound, upper_bound #include // pair, make_pair #include // tuple, make_tuple #include // int64_t, int*_t #include // printf #include // map #include // queue, priority_queue #include // set #include // stack #include // deque #include // unordered_map #include // unordered_set #include // bitset #include // isupper, islower, isdigit, toupper, tolower #include #include //setprecision #include #include //istringstream #include #include #include //std::advance() using namespace std; using ll = long long; using ull = unsigned long long; using ld = long double; #define SZ(x) ((int)(x).size()); #define vec vector template using v = vector; template using vv = v< v >; template using vvv = v< vv >; #define el '\n' #define vl v #define vvl vv #define pl pair #define repab(i, a, b) for(ll i = a; a < (ll)(b); ++i) #define rep(i, n) for(ll i = 0; i < (ll)(n); ++i) #define rep1(i, n) for(ll i = 1; i <= (ll)(n); ++i) #define rrep(i, n) for(ll i = ((ll)(n) - 1); i >= 0; --i) #define rrep1(i, n) for(ll i = ((ll)(n)); i > 0; --i) #define YN(x) cout << ((x) ? "YES\n" : "NO\n"); #define Yn(x) cout << ((x) ? "Yes\n" : "No\n"); #define yn(x) cout << ((x) ? "yes\n" : "no\n"); #define COUT(x) cout << (x) << el; const double pi = 3.141592653589793238; const int inf = 1073741823; const ll infl = 1LL << 60; ll gcd(ll a, ll b){return b ? gcd(b, a % b) : a;} int dx[4] = {1, 0, -1, 0}; int dy[4] = {0, 1, 0, -1}; int main(){ int n,k; cin >> n >> k; vector a(n); const long long mod = 998244353; for(int i = 0; i < n; ++i){ cin >> a[i]; } long long count = 0; for(long long i = 0; i < (1 << n); ++i){ long long mod998 = 0; long long mod998244353 = 0; if(bitset<28>(i).count() != k) continue; for(long long j = 0; j < n; ++j){ if(i & (1 << j)){ mod998 += (a[j] % 998); mod998 %= 998; mod998244353 += a[j]; mod998244353 %= 998244353; } } if(mod998244353 <= mod998){ count++; count %= 998; } } cout << count << endl; return 0; }