#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 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; } }; ll modmul(ll x, ll y, ll mod){ ll ret = 0; while(y){ if(y & 1){ ret = (ret + x) % mod; } x = x * 2 % mod; y >>= 1; } return ret; } ll modpow(ll x, ll n, ll mod){ ll ret = 1; while(n){ if(n & 1){ ret = modmul(ret, x, mod); } x = modmul(x, x, mod); n >>= 1; } return ret; } 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; vector n(a); vector m(a); for(int i=0;i>n.at(i); } ll ans=0; for(int i=0;i>m.at(i); ans=ans+m.at(i); } if(b%ans==0){ cout<