#include <iostream> #include <vector> #include <algorithm> #include <atcoder/modint> using namespace std; using i32 = int32_t; using u32 = uint32_t; using i64 = int64_t; using u64 = uint64_t; #define rep(i,n) for(int i=0; i<(n); i++) using m32 = atcoder::modint1000000007; int main() { i64 N,K; cin >> N >> K; K--; m32 rComb = 1; for(int i=1; i<=N; i++) rComb /= i; for(int i=0; i<N; i++) rComb *= N+K-i; m32 lComb = 1; m32 ans = lComb * rComb; for(int n=1; n<=min(N-1,K); n++){ lComb *= (N-n); lComb /= n; rComb *= K-n+1; rComb /= N+K-n+1; ans += lComb * rComb; } cout << ans.val() << endl; return 0; } struct ios_do_not_sync{ ios_do_not_sync(){ ios::sync_with_stdio(false); cin.tie(nullptr); } } ios_do_not_sync_instance;