#include <bits/stdc++.h>
using namespace std;
const int MAXN = 105;
const int MAXM = 1005;
int n, m;
int a[MAXN];
double dp[2][MAXN * MAXM];
double prefix[MAXN * MAXM];
double getSum(int l, int r) {
  if (l == 0) return prefix[r];
  return prefix[r] - prefix[l - 1];
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int rankSum = 0;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    rankSum += a[i];
  }
  if (m == 1) {
    cout << "1" << '\n';
    return 0;
  }
  for (int i = 1; i <= m; i++) {
    if (i == a[0]) continue;
    dp[0][i] = 1;
  }
  for (int i = 1; i < n; i++) {
    int maxSum = (i + 1) * m;
    for (int j = 0; j <= maxSum; j++) {
      dp[i & 1][j] = 0;
    }
    prefix[0] = dp[(i - 1) & 1][0];
    for (int j = 1; j <= maxSum; j++) {
      prefix[j] = prefix[j - 1] + dp[(i - 1) & 1][j];
    }
    for (int p = 1; p <= maxSum; p++) {
      dp[i & 1][p] = getSum(max(p - m, 0), p - 1);
      if (a[i] <= p) dp[(i & 1)][p] -= dp[(i - 1) & 1][p - a[i]];
      dp[i & 1][p] /= m - 1;
    }
  }
  double answer = 0;
  for (int i = 0; i < rankSum; i++) {
    answer += dp[(n - 1) & 1][i];
  }
  cout << fixed << setprecision(15) << answer + 1 << '\n';
}
