#include <bits/stdc++.h>
using namespace std;

const int mod = 1000000007, inv2 = 500000004;

long long dp[110][10010];

void add(long long &a, long long b){
	a = (a + b) % mod; 
}

long long power(int a, int b){
	if (!b) return 1;
	long long tmp = power(a, b >> 1);
	return b & 1 ? tmp * tmp % mod * a % mod : tmp * tmp % mod;
}

int main(){
	int n, K; scanf("%d%d", &n, &K);
	dp[n - 1][0] = K == n ? K : K + 1;
	dp[n - 1][1] = K == n ? 1 : 0;
	for (int i = n - 1; i >= 1; i--){
		for (int j = 0; j <= 10000; j++){
			if (!dp[i][j]) continue;
			for (int k = 0; k <= min(i, K); k++){
				int cnt = (k + j) / i, last = (k + j) % i;
				add(dp[i - 1][j + cnt], dp[i][j]);
			}
			for (int k = i + 1; k <= K; k++){
				add(dp[i - 1][j], dp[i][j]);
			}
		}
	}
	long long ans = 1ll * n * power(K + 1, n - 1) % mod * K % mod * (K + 1) % mod * inv2 % mod;
	for (int i = 0; i <= 10000; i++){
		ans = ((ans - i * dp[0][i]) % mod + mod) % mod;
	}
	printf("%lld\n", ans);
	return 0;
}
