#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #define _USE_MATH_DEFINES #include #include //#include //using namespace atcoder; using namespace std; #define REP(i,n) for(int i = 0; i < (int)n; i++) #define RREP(i,n) for(int i = (int)n-1; i >= 0; i--) #define LREP(i,n) for(LL i = 0; i < (LL)n; i++) #define Vi vector #define Vl vector #define LP pair #define P pair #define T3 tuple #define T4 tuple #define INF 1000000007 #define SIZE 200010 #define MOD 1000000007 typedef long long LL; LL inv_mod(LL x) { LL y = x, res = 1; REP(i, 32) { if ((MOD - 2) & ((LL)1 << i)) { res = (res * y) % MOD; } y = (y * y) % MOD; } return res; } LL N, M; LL F[SIZE], FI[SIZE]; void init() { F[0] = FI[0] = 1; for (LL i = 1; i < SIZE; i++) { F[i] = (F[i - 1] * i) % MOD; FI[i] = (FI[i - 1] * inv_mod(i)) % MOD; } } LL comb(LL n, LL k) { LL res = F[n]; res = (res * FI[n - k]) % MOD; res = (res * FI[k]) % MOD; return res; } int main() { init(); cin >> N >> M; LL ans = 0; for (LL n = N; n <= M; n++) { ans = (ans + comb(n, N)) % MOD; } cout << ans << endl; }