#include <bits/stdc++.h>
using namespace std;
template <class T>
T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
const double EPS = 1e-9;
const double PI = acos(-1.);
const int INF = 1e9;
const int MAXN = 21;
const long long MOD = 1e9 + 7;
double dp[1 << MAXN], p[MAXN], ans[MAXN];
void solve() {
  int n, k;
  scanf("%d%d", &n, &k);
  int real_k = 0;
  for (int i = (0); i < (int)(n); i++) {
    scanf("%lf", &p[i]);
    dp[1 << i] = p[i];
    if (p[i] > EPS) {
      real_k++;
    }
  }
  real_k = min(real_k, k);
  for (int i = (0); i < (int)(1 << n); i++) {
    int bit_cnt = 0;
    double pp = 0.;
    for (int j = (0); j < (int)(n); j++) {
      if (i & (1 << j)) {
        bit_cnt++;
      } else {
        pp += p[j];
      }
    }
    if (pp > EPS) {
      for (int j = (0); j < (int)(n); j++) {
        if (!(i & (1 << j))) {
          dp[i | (1 << j)] += dp[i] * p[j] / pp;
        }
      }
    }
    if (bit_cnt == real_k) {
      for (int j = (0); j < (int)(n); j++) {
        if (i & (1 << j)) {
          ans[j] += dp[i];
        }
      }
    }
  }
  for (int i = (0); i < (int)(n); i++) {
    printf("%.12lf ", ans[i]);
  }
  putchar('\n');
}
int main() {
  int t = 1;
  while (t--) {
    solve();
  }
}
