package main
import (
"fmt"
)
func main() {
var n, x int
if _, err := fmt.Scan(&n, &x); err != nil {
return
}
c := make([]int, n)
maxSum := 0
for i := 0; i < n; i++ {
fmt.Scan(&c[i])
maxSum += c[i]
}
dp := make([][]float64, n+1)
for i := range dp {
dp[i] = make([]float64, maxSum+1)
}
dp[0][0] = 1.0
for i := 0; i < n; i++ {
for k := n - 1; k >= 0; k-- {
for s := maxSum; s >= c[i]; s-- {
dp[k+1][s] += dp[k][s-c[i]]
}
}
}
dpJ := make([][][]float64, n)
for j := 0; j < n; j++ {
dpJ[j] = make([][]float64, n+1)
for i := range dpJ[j] {
dpJ[j][i] = make([]float64, maxSum+1)
}
dpJ[j][0][0] = 1.0
for i := 0; i < n; i++ {
if i == j {
continue
}
for k := n - 1; k >= 0; k-- {
for s := maxSum; s >= c[i]; s-- {
dpJ[j][k+1][s] += dpJ[j][k][s-c[i]]
}
}
}
}
Prob := make([][]float64, n+1)
for i := range Prob {
Prob[i] = make([]float64, maxSum+1)
}
Prob[n][maxSum] = 1.0
ans := 0.0
for k := n; k >= 1; k-- {
for s := 0; s <= maxSum; s++ {
if Prob[k][s] > 0 {
if s*2 > x*(n+k) {
ans += Prob[k][s] * float64(x) * float64(n+k) / float64(2*k)
for j := 0; j < n; j++ {
if s >= c[j] && dp[k][s] > 0 {
Prob[k-1][s-c[j]] += Prob[k][s] / float64(k) * dpJ[j][k-1][s-c[j]] / dp[k][s]
}
}
} else {
ans += Prob[k][s] * float64(s)
}
}
}
}
fmt.Printf("%.15f\n", ans)
}