#include <bits/stdc++.h>
using namespace std;
double dp[(1 << 20) + 10];
double res[25], arr[25];
int n, k;
queue<int> q;
void dpf(int prev) {
  double chance = 1;
  int cnt = 0;
  for (int i = 0; i < n; i++) {
    if (prev & (1 << i)) {
      chance -= arr[i];
      cnt++;
    }
  }
  if (cnt == k) {
    for (int i = 0; i < n; i++) {
      if (prev & (1 << i)) res[i] += dp[prev];
    }
    return;
  }
  for (int i = 0; i < n; i++) {
    if (prev & (1 << i))
      continue;
    else {
      if (dp[prev | (1 << i)] == 0.0 && arr[i] != 0.0) q.push(prev | (1 << i));
      dp[prev | (1 << i)] += dp[prev] * (arr[i] / chance);
    }
  }
}
int main() {
  cin >> n >> k;
  int cnt0 = 0;
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
    cnt0 += (arr[i] == 0.0);
  }
  k = min(n - cnt0, k);
  dp[0] = 1.0;
  q.push(0);
  while (!q.empty()) {
    dpf(q.front());
    q.pop();
  }
  for (int i = 0; i < n; i++) printf("%lf%c", res[i], i == n - 1 ? '\n' : ' ');
  return 0;
}
