#include #include #include #include using namespace std; namespace mp = boost::multiprecision; using namespace mp; using ull = __int128; using ll = long long; using cll = cpp_int; #define sort(a) sort(a.begin(), a.end()) #define rep(i,a) for(int i=0;i= mod) x -= mod; return *this; } mint& operator-=(const mint& a) { if ((x += mod-a.x) >= mod) x -= mod; return *this; } mint& operator*=(const mint& a) { (x *= a.x) %= mod; return *this; } mint operator+(const mint& a) const { mint res(*this); return res+=a; } mint operator-(const mint& a) const { mint res(*this); return res-=a; } mint operator*(const mint& a) const { mint res(*this); return res*=a; } mint pow(ll t) const { if (!t) return 1; mint a = pow(t>>1); a *= a; if (t&1) a *= *this; return a; } // for prime mod mint inv() const { return pow(mod-2); } mint& operator/=(const mint& a) { return (*this) *= a.inv(); } mint operator/(const mint& a) const { mint res(*this); return res/=a; } friend ostream& operator<<(ostream& os, const mint& m){ os << m.x; return os; } friend istream& operator>>(istream& lhs,mint& rhs) noexcept { lhs >> rhs.x; return lhs; } }; int kkk(vector n){ ll b=n.size(); if(b==1){ return n.at(0); } else{ ll ans=0; vector> data(b-1, vector(b-1)); for(int i=0;ij){ data.at(i).at(j)=n.at(j); } else{ data.at(i).at(j)=n.at(j+1); } } } vector k(b-1); for(int i=0;i>a>>b; string c; cin>>c; ll d=0; ll mou=0; ll mada=0; for(int i=0;i before(d); ll e=0; for(int i=1;i