local mma, mmi = math.max, math.min
local mce, mfl = math.ceil, math.floor

local mod = 1000000007
local function bmul(x, y)
  local x0, y0 = x % 31623, y % 31623
  local x1, y1 = mfl(x / 31623), mfl(y / 31623)
  return (x1 * y1 * 14122 + (x1 * y0 + x0 * y1) * 31623 + x0 * y0) % mod
end
local function badd(x, y)
  return (x + y) % mod
end

local function modpow(src, pow)
  local res = 1
  while 0 < pow do
    if pow % 2 == 1 then
      res = bmul(res, src)
      pow = pow - 1
    end
    src = bmul(src, src)
    pow = mfl(pow / 2)
  end
  return res
end

local function modinv(src)
  return modpow(src, mod - 2)
end

local fact = {1}
for i = 2, 1000 do
  fact[i] = bmul(fact[i - 1], i)
end
local factinv = {}
for i = 1, 1000 do
  factinv[i] = modinv(fact[i])
end

local function getComb(n, k)
  if n == k then return 1 end
  return bmul(fact[n], bmul(factinv[k], factinv[n - k]))
end

local n, a, b, c, d = io.read("*n", "*n", "*n", "*n", "*n")
local rem = {}
local remalt = {}
for i = 1, n do
  rem[i] = 0
  remalt[i] = 0
end
rem[n] = 1

local function calc(ia, ic)
  local ret = 1
  for i = 0, ic - 1 do
    ret = bmul(ret, getComb((ic - i) * ia, ia))
  end
  return bmul(ret, factinv[ic])
end

local ans = 0
for ia = a, b do
  local src = (ia - a) % 2 == 0 and rem or remalt
  local dst = (ia - a) % 2 == 0 and remalt or rem
  for i = 1, n do dst[i] = src[i] end
  local cmin = c
  local cmax = mmi(d, mfl(n / ia))
  for ic = cmin, cmax do
    local v = ic * ia
    local z = calc(ia, ic)
    ans = badd(ans, bmul(src[v], z))
    for i_n = v + 1, n do
      dst[i_n - v] = badd(dst[i_n - v], bmul(src[i_n], bmul(z, getComb(i_n, i_n - v))))
    end
  end
end
print(ans)
