#include <bits/stdc++.h>
using namespace std;
const int MX = 100 + 5;
const int inf = 0x3f3f3f3f;
double dp[1 << 20];
double p[25], ans[25];
int main() {
  int n, k, cnt = 0;
  scanf("%d%d", &n, &k);
  for (int i = 0; i < n; i++) {
    scanf("%lf", &p[i]);
    if (p[i] < 1e-8) cnt++;
  }
  k = min(k, n - cnt);
  dp[0] = 1;
  queue<int> q;
  q.push(0);
  while (!q.empty()) {
    int S = q.front();
    q.pop();
    double pm = 1;
    int cnt = 0;
    for (int i = 0; i < n; i++)
      if (S >> i & 1) pm -= p[i], cnt++;
    if (cnt < k)
      for (int i = 0; i < n; i++) {
        if (S >> i & 1) continue;
        if (dp[S | (1 << i)] == 0 && p[i] != 0) q.push(S | (1 << i));
        dp[S | (1 << i)] += dp[S] / pm * p[i];
      }
    if (cnt == k)
      for (int i = 0; i < n; i++)
        if (S >> i & 1) ans[i] += dp[S];
  }
  for (int i = 0; i < n; i++) printf("%.7f%c", ans[i], i == n - 1 ? '\n' : ' ');
  return 0;
}
