#include using namespace std; using ll = long long; int dp[51][50*50 + 1]; int cdp[51][50*50 + 1]; constexpr int mod = 1000000007; int main() { ios::sync_with_stdio(false); int d, r; cin >> d >> r; dp[0][0] = 0; cdp[0][0] = 1; for(int i = 1; i <= r; ++i) { dp[0][i*i] = 2*i; cdp[0][i*i] = 2; } for(int i = 1; i < d; ++i) { for(int j = 0; j <= r*r; ++j) { dp[i][j] += dp[i-1][j]; cdp[i][j] += cdp[i-1][j]; dp[i][j] %= mod; cdp[i][j] %= mod; for(int k = 1; k <= r; ++k) { if(j-k*k < 0) break; dp[i][j] = (1ll*dp[i][j] + 2ll*cdp[i-1][j-k*k]*k + 2ll*dp[i-1][j-k*k]) % mod; cdp[i][j] = (1ll*cdp[i][j] + 2ll*cdp[i-1][j-k*k]) % mod; } } } int sm = 0; for(int i = 0; i <= r*r; ++i) { sm += dp[d-1][i]; sm %= mod; } cout << sm << '\n'; return 0; }