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

const int MOD = 1e9 + 7;

long long MyPow(long long x, long long y) {
	long long c = 1;
	while(y) {
		if(y & 1) c = c * x % MOD;
		x = x * x % MOD;
		y >>= 1;
	}
	return c;
}

int n, k;
long long f[200][20000];

void U(long long &x) {
	if(x > MOD) x -= MOD;
	if(x < 0) x += MOD;
}

int main(void) {
	scanf("%d%d", &n, &k);
	long long ans = 0, pp = MyPow(k + 1, n - 1);
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= k; j++)
			ans = (ans + pp * j) % MOD;
	}
	f[n][0] = 1;
	for(int i = n; i; i--) {
		for(int j = 0; j <= 10000; j++) {
			if(!f[i][j]) continue;
			for(int l = 0; l <= k; l++) {
				if(l <= i) 
					U(f[i - 1][j + (l + j) / i] += f[i][j] % MOD);
				else 
					U(f[i - 1][j] += f[i][j]);
			}
		}
	}
	for(int i = 0; i <= 10000; i++)
		U(ans -= i * f[0][i] % MOD);
		printf("%lld\n", ans);
	return 0;
}







