#include <bits/stdc++.h>
using namespace std;
const long long inf = INT_MAX, df = 25;
long long i, j, k, l, m, n, o, q, r, s, t, u, v, w, x, y, z, cnt[(1 << 20)],
    hbit[(1 << 20)];
double dp[(1 << 20)], sum[(1 << 20)], p[df];
int main() {
  {
    scanf("%lld%lld", &n, &k);
    s = (1 << n) - 1;
    for (long long i = (1); i <= (n); ++i) scanf("%lf", &p[i]);
  }
  {
    long long tot = 0;
    for (long long i = (1); i <= (n); ++i)
      if (p[i] != 0) ++tot;
    if (tot <= k) {
      for (long long i = (1); i <= (n); ++i) {
        if (p[i] == 0)
          printf("0.0000000000 ");
        else
          printf("1.00000000000 ");
      }
      return 0;
    }
  }
  {
    for (long long i = (1); i <= (n); ++i) cnt[1 << (i - 1)] = i;
    for (long long i = (1); i <= (s); ++i) {
      hbit[i] = hbit[i - (i & (-i))] + 1;
      sum[i] = sum[i - (i & (-i))] + p[cnt[(i & (-i))]];
    }
    dp[0] = 1;
  }
  {
    for (long long i = (1); i <= (s); ++i) {
      if (hbit[i] > k) continue;
      for (long long j = i; j; j -= (j & (-j))) {
        long long x = cnt[j & (-j)];
        if (p[x] == 0) continue;
        dp[i] += dp[i ^ (1 << (x - 1))] *
                 (p[x] / sum[((1 << n) - 1) ^ i ^ (1 << (x - 1))]);
      }
    }
  }
  {
    for (long long i = (1); i <= (n); ++i) {
      double ans = 0;
      for (long long j = (0); j <= (s); ++j) {
        if (((j >> (i - 1)) & 1) && hbit[j] == k) {
          ans += dp[j];
        }
      }
      printf("%lf ", ans);
    }
  }
  return puts(""), 0;
}
