#include using namespace std; typedef long long ll; typedef vector vi; typedef vector vl; typedef pair pii; typedef pair pll; typedef int _loop_int; #define REP(i,n) for(_loop_int i=0;i<(_loop_int)(n);++i) #define FOR(i,a,b) for(_loop_int i=(_loop_int)(a);i<(_loop_int)(b);++i) #define FORR(i,a,b) for(_loop_int i=(_loop_int)(b)-1;i>=(_loop_int)(a);--i) #define DEBUG(x) cout<<#x<<": "<>=1; } return r; } ll dp[125252][61]; int main(){ cin>>n>>l>>r; if(false){ map cnt; map> lst; vi v(n); REP(i,n)v[i] = i+1; do{ vi x = v; REP(i,n-1){ if(x[i] > x[i+1])swap(x[i],x[i+1]); } cnt[x]++; lst[x].push_back(v); }while(next_permutation(ALL(v))); int ans = 0; for(auto P : cnt){ vi V = P.first; int cnt = P.second; printf("%d\n",cnt); if(l<=cnt && cnt<=r){ ans++; DEBUG_VEC(V); } } printf("%d\n",ans); } fact[0] = 1; FOR(i,1,125252)fact[i]=fact[i-1]*i%MOD; REP(i,125252)ifact[i]=modinv(fact[i]); // dp dp[0][0] = 1; FOR(k,1,60){ ll sum = 0; FOR(l,1,n+1){ sum += dp[l-1][k-1] * ifact[l-1] % MOD; sum %= MOD; dp[l][k] = fact[l-1] * sum % MOD; } } // calc ll ans = 0; // cnt == 0 if(l==0){ ans = fact[n-1] * (n-1) % MOD; } // cnt >= 2 int x = 1; while((1ll<