#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int sum = 0, ff = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') ff = -1;
    ch = getchar();
  }
  while (isdigit(ch)) sum = sum * 10 + (ch ^ 48), ch = getchar();
  return sum * ff;
}
const int mod = 1e9 + 7;
const int mo = 998244353;
const int N = 20;
int n, m, cnt;
double P[N + 5], f[(1 << N) + 5], ans[N + 5];
inline int bit_count(int x) {
  int ans = 0;
  while (x) ans += x & 1, x >>= 1;
  return ans;
}
int main() {
  n = read();
  m = read();
  for (int i = (1); i <= (n); i++) scanf("%lf", &P[i]), cnt += (P[i] > 0);
  if (cnt <= m) {
    for (int i = (1); i <= (n); i++) printf("%d ", (P[i] > 0));
    return 0;
  }
  f[0] = 1;
  int MS = (1 << n) - 1;
  for (int S = (0); S <= (MS); S++) {
    if (bit_count(S) == m)
      for (int i = (1); i <= (n); i++)
        if (S & (1 << i - 1)) ans[i] += 1.0 * f[S];
    double AP = 0;
    for (int i = (1); i <= (n); i++)
      if (!(S & (1 << i - 1))) AP += 1.0 * P[i];
    for (int i = (1); i <= (n); i++)
      if (!(S & (1 << i - 1)))
        f[S | (1 << i - 1)] += f[S] * 1.0 * (P[i] / (1.0 * AP));
  }
  for (int i = (1); i <= (n); i++) printf("%.7lf ", ans[i]);
  return 0;
}
