#include using namespace std; #include using namespace atcoder; using ll = long long; using ull = unsigned long long; using ld = long double; template using vc = vector; template using vv = vc>; using vl = vc; using vvl = vc>; using vul = vc; using vs = vc; #define rep(i,n) for(ll i=0;i<(n);i++) #define rep1(i,n) for(ll i=1;i<=(n);i++) #define Rep(i,n) for(ll i=n-1;i>=0;i--) //#define rep(i,n) for(ull i=0;i<(n);i++) #define nall(x) x.begin(),x.end() #define pb push_back #define pob pop_back #define YES cout<<"Yes"<> s; value[0]=1; for(ll i=1;i<200010;i++)value[i]=value[i-1]*i; rev_value[200009]=value[200009].inv(); for(ll i=200008;i>=0;i--)rev_value[i]=rev_value[i+1]*(i+1); vl cnt(10,0); for(auto c:s)cnt[c-'0']++; mint total=calc(cnt); if(cnt[0]>0){ cnt[0]--; mint no=calc(cnt); cnt[0]++; total-=no; } cout << total.val() << endl; }