#include using namespace std; using ll = long long; using ld = long double; using pll = pair ; using pld = pair; const int INF=1e9+7; const ll LINF=1LL<<60; const ll MOD=1e9+7; const ld PI=acos(-1); const ld EPS = 1e-9; //微調整用(EPSより小さいと0と判定など) #define gcd __gcd //llは受け取ってくれない int lcm(int a, int b){return a / gcd(a, b) * b;} #define ALL(a) a.begin(),a.end() //sort(ALL(vec)); #define REP(i,m,n) for(int i=(int)(m) ; i < (int) (n) ; ++i ) #define rep(i,n) REP(i,0,n) #define MP(a,b) make_pair(a,b) #define SORT_UNIQUE(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end())))) #define GET_POS(c,x) (lower_bound(c.begin(),c.end(),x)-c.begin()) #define PB push_back #define SZ(x) ((int)(x).size) //size()がunsignedなのでエラー避けに //最大値、最小値を更新する。aよりbのが大きい(小さい)か等しければaを更新してtrueを返す。そうでなければ何もせずfalseを返す chmax(nowmax,x); template bool chmax(T& a, T b){return (a = max(a, b)) == b;} template bool chmin(T& a, T b){return (a = min(a, b)) == b;} // ----- template end ---- // // ------- library ------- // //nCk,nPk,nHk(mod MOD)の計算 n!とk!^{MOD-2}を前計算して求める //n(nHkを使う場合はn+k)の最大値を設定すること(10^7で581ms 236MB, 3*10^7で1496ms 705MB) ll maxNplsK = 50; // n+kの最大値を代入(0 < n, k <= maxNplsK) nHkを使わないならmaxNでもいい vector fac(maxNplsK+1); //i!(mod MOD) を格納。 //aCbをmod計算 ll comb(ll a, ll b){ if(a == 0 && b == 0)return 1; if(a < b || a < 0)return 0; ll tmp = fac.at(a - b) * fac.at(b); return fac.at(a) / tmp; } // ----- library end ----- // int main() { cout << "Hello World!" << endl; // -- main() end -- // }