#include #include using namespace std; int const MOD = 1000000007; int const K_MAX = 10000; int mul_inv(int a, int b) { int b0 = b, t, q; int x0 = 0, x1 = 1; if (b == 1) return 1; while (a > 1) { q = a / b; t = b, b = a % b, a = t; t = x0, x0 = x1 - q * x0, x1 = t; } if (x1 < 0) x1 += b0; return x1; } int main() { long long int N, K; long long int _aa[2][K_MAX], *alt1 = _aa[0], *alt2 = _aa[1]; scanf("%lld %lld", &N, &K); alt1[0] = 1LL * N*(N+1)/2 % MOD; for(int i=1; i+1<=K; ++i) { alt2[0] = N; for(int j=1; j<=i+1; ++j) { alt2[0] = 1LL * alt2[0]*(N+j) % MOD; } alt2[0] = 1LL * alt2[0]*mul_inv(i+2, MOD) % MOD; for(int j=1; j