local mod = 1000000007 local function badd(a, b) return (a + b) % mod end local function bsub(x, y) return x < y and x - y + mod or x - y end local n, k = io.read("*n", "*n", "*l") io.read() local dp1, dp2 = {}, {} for i = 1, k + 1 do dp1[i] = 0 end dp1[1] = 1 local dstlim = 1 for i = 1, n do dstlim = dstlim + i - 1 local src = i % 2 == 1 and dp1 or dp2 local dst = i % 2 == 1 and dp2 or dp1 for j = 1, dstlim do dst[j] = 0 end for srcpos = 1, dstlim - i + 1 do dst[srcpos] = badd(dst[srcpos], src[srcpos]) if srcpos + i - 1 < dstlim then dst[srcpos + i] = bsub(dst[srcpos + i], src[srcpos]) end end for j = 2, dstlim do dst[j] = badd(dst[j], dst[j - 1]) end end local tbl = n % 2 == 1 and dp2 or dp1 local ret = 0 for i = 1, k + 1 do ret = badd(ret, tbl[i]) end print(ret)