def dfs(k,r,l,p,e,t)
    return 0 if r > t + e || l < t - e
    return 1 if t - e <= r && l <= t + e
    h = (r.to_f + l.to_f)/2
    if k == 0
        return 1 if h.between?(t - e, t + e)
        return 0
    end
    ret = 0
    if h >= t
        ret += (1 - p) * dfs(k-1,r,h,p,e,t)
        ret += p * dfs(k-1,h,l,p,e,t)
    else
        ret += (1 - p) * dfs(k-1,h,l,p,e,t)
        ret += p * dfs(k-1,r,h,p,e,t)
    end
    return ret
end

k, r, l = gets.split.map(&:to_i)
p = gets.to_f
e = gets.to_f
t = gets.to_f

puts dfs(k,r,l,p,e,t)