#include <bits/stdc++.h>
using namespace std;
long long bigmod(long long b, long long p) {
  if (p == 0) return 1;
  long long my = bigmod(b, p / 2);
  my *= my;
  my %= 1000000009;
  if (p & 1) my *= b, my %= 1000000009;
  return my;
}
int setb(int n, int pos) { return n = n | (1 << pos); }
int resb(int n, int pos) { return n = n & ~(1 << pos); }
bool checkb(int n, int pos) { return (bool)(n & (1 << pos)); }
double p[100];
int n, k;
double pr[(1 << 20) + 5][21];
double prob(int mask, int pos) {
  double tot = 0.0;
  int i;
  for (i = 0; i < n; i++) {
    if (checkb(mask, i) == 0) tot += p[i];
  }
  return p[pos] / tot;
}
void prework() {
  for (int mask = 0; mask < (1 << n); mask++) {
    for (int i = 0; i < n; i++) {
      if (checkb(mask, i) == 0) {
        pr[mask][i] = prob(mask, i);
      }
    }
  }
}
double dp[(1 << 20) + 5];
double motherfuckerareyoukiddingme(int x) {
  for (int mask = (1 << n) - 1; mask >= 0; mask--) {
    int bt = __builtin_popcount(mask);
    if (bt >= k) {
      if (bt == k && checkb(mask, x))
        dp[mask] = 1.0;
      else
        dp[mask] = 0.0;
    } else {
      double ret = 0.0;
      for (int i = 0; i < n; i++) {
        if (checkb(mask, i) == 0) {
          ret += pr[mask][i] * dp[setb(mask, i)];
        }
      }
      dp[mask] = ret;
    }
  }
  return dp[0];
}
int main() {
  int i, d = 0;
  scanf("%d %d", &n, &k);
  for (i = 0; i < n; i++) scanf("%lf", &p[i]);
  for (i = 0; i < n; i++)
    if (p[i] > 0.0) d++;
  k = min(d, k);
  prework();
  for (i = 0; i < n; i++) {
    if (i) printf(" ");
    printf("%.10f", motherfuckerareyoukiddingme(i));
  }
  printf("\n");
  return 0;
}
