#include #include using namespace std; using namespace atcoder; #define int long long #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) #define bit(n,k) (((ll)n>>(ll)k)&1) /*nのk bit目*/ #define pb push_back #define pf push_front #define fi first #define se second #define eb emplace_back #define endl '\n' #define SZ(x) ((ll)(x).size()) #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() typedef long long ll; templatebool chmax(T &a,const T &b){if(abool chmin(T &a,const T &b){if(b 0) { if (n & 1) res = res * a % mod; a = a * a % mod; n >>= 1; } return res; } ll functional(int x){ if(x==0)return 1; else return x*functional(x-1); } int cntv[10]; int vec[10]; main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); cout << fixed << setprecision(12); /*--------------------------------*/ int n,k;cin>>n>>k; int ans=0; int ma=0; for(int i=1;i<=9;i++){ cin>>cntv[i]; if(cntv[i])chmax(ma,i); } if(n==1){ if(ma%k==0)cout<<1<exist; unordered_mapexist2; vectorvec(10); auto dfs=[&](int cur,int cnt,auto &dfs)->void{ if(cnt>n/2)return; if(cur==10){ if(cntv; string s; for(int i=1;i<=9;i++){ for(int j=0;jv2; string s2; vectorcnt2(10); for(int i=1;i<10;i++)cnt2[i]=cntv[i]; for(int i=0;iexist2.size())swap(exist,exist2); for(auto p:exist){ if(p.first==0)continue; ans+=p.second*exist2[k-p.first]; } ans+=exist[0]*exist2[0]; return; } for(int i=0;i<=cntv[cur];i++){ vec[cur]=i; dfs(cur+1,cnt+i,dfs); } return; }; dfs(1,0,dfs); cout<