#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:256000000")
using namespace std;
double PI = 3.1415926535897932384626433832795;
double EPS = 1e-2;
const int MAXN = 200200;
const int MAXC = 1e7;
const int ROOT = 1734;
const int LN = 20;
const int MOD = 1e9 + 7;
const int OP = 1e6;
inline int sum(int a, int b) {
  a += b;
  if (a >= MOD) a -= MOD;
  return a;
}
inline int mul(int a, int b) { return (a * (long long)b) % MOD; }
inline int sub(int a, int b) {
  a -= b;
  if (a < 0) a += MOD;
  return a;
}
inline int pw(int base, int deg) {
  int res = 1;
  while (deg) {
    if (deg & 1) res = mul(res, base);
    base = mul(base, base);
  }
  return res;
}
inline int del(int a, int b) { return mul(a, pw(b, MOD - 2)); }
double mas[LN];
int n, k;
int qq[1 << LN];
double ans[LN];
double d[1 << LN];
int was[1 << LN], en, st;
void bfs(int mask) {
  int t = mask, cnt = 0;
  while (t) {
    cnt += t & 1;
    t >>= 1;
  }
  if (cnt == k) {
    for (int i = 0; i < n; ++i)
      if (mask & (1 << i)) ans[i] += d[mask];
    return;
  }
  double cur = 0;
  for (int i = 0; i < n; ++i) {
    if ((1 << i) & mask) cur += mas[i];
  }
  cur = (1 - cur);
  for (int i = 0; i < n; ++i) {
    if (!((1 << i) & mask)) {
      int tmask = mask | (1 << i);
      if (!was[tmask]) {
        was[tmask] = 1;
        qq[en++] = tmask;
      }
      d[tmask] += d[mask] * mas[i] / cur;
    }
  }
}
void solve() {
  cin >> n >> k;
  int t = 0;
  for (int i = 0; i < n; ++i) {
    cin >> mas[i];
    if (fabs(mas[i]) < EPS) t++;
  }
  k = min(k, n - t);
  cout.precision(15);
  d[0] = 1;
  qq[en++] = 0;
  while (st != en) {
    bfs(qq[st++]);
  }
  for (int i = 0; i < n; ++i) cout << fixed << ans[i] << ' ';
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  srand(1313);
  int t = 1;
  for (int i = 0; i < t; ++i) {
    solve();
  }
  return 0;
}
