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

const int N = 105;
const int M = 10001;
const int md = 1e9 + 7;

void add(int &x, int y) { x += y; while(x >= md) x -= md; if (x < 0) x += md; }

int n, k;
int f[N][M];
int pw[N];
int ans;

int main() {
	scanf("%d %d", &n, &k);
	pw[0] = 1; for (int i = 1; i < N; ++i) pw[i] = 1LL * pw[i-1] * (k + 1) % md;
	f[n + 1][0] = 1;
	for (int i = n; i >= 1; --i) {
		for (int j = 0; j < M; ++j) if (f[i + 1][j]) {
			for (int t = 0; t <= k; ++t) {
				int cur = (t <= i ? (t + j) / i : 0);
				add(f[i][j + cur], f[i + 1][j]);
				add(ans, 1LL * (1LL * f[i + 1][j] * pw[i - 1] % md) * (t - cur) % md);
			}
		}
 	}

 	printf("%d\n", ans);
}