#pragma once
// set_mod より後で宣言するtemplate<typenameMINT>classMintUtility{std::vector<std::vector<MINT>>nCk_{std::vector<MINT>{1}};intS=1;voidextend(constintn){if(n<S)return;constintpreS=S;do{S<<=1;}while(S<=n);nCk_.resize(S);for(inti=preS;i<S;i++){nCk_[i].resize(i/2+1);nCk_[i][0]=1;for(intj=1;j<=i/2;j++)nCk_[i][j]=nCk_[i-1][min(j,i-1-j)]+nCk_[i-1][min(j-1,i-1-(j-1))];}}public:MINTnCk(intn,intk){if(k<0||n<k)return0;extend(n);returnnCk_[n][min(k,n-k)];}};