#include using namespace std; using ll = long long; void print_list(vector a){ for(auto i:a){ cout << i << ' '; } cout << '\n'; } int m = 1000000007; vector> gula; vector> gula2; ll objem(ll d, ll sr) { if (gula[d][sr] != -1) { return gula[d][sr]; } ll res = 0; if (d == 0){ res = 1; } else { res = res + objem(d-1,sr) % m; for(int x=1; x*x <= sr; x++){ res = (res + 2*objem(d-1,sr-x*x)) % m; } } gula[d][sr] = res; return res; } ll objem2(ll d, ll sr) { if (gula2[d][sr] != -1) { return gula2[d][sr]; } ll res = 0; if (d == 0){ res = 0; } else { res = res + objem2(d-1,sr) % m; for(int x=1; x*x <= sr; x++){ res = (res + 2*(objem2(d-1,sr-x*x)+x*objem(d-1,sr-x*x))) % m; } } gula2[d][sr] = res; return res; } int main(){ ll d,r; cin>>d>>r; gula = vector>(d+1,vector(r*r*d+1,-1)); gula2 = vector>(d+1,vector(r*r*d+1,-1)); cout<< objem2(d,r*r) <<'\n'; }