#include <bits/stdc++.h>
using namespace std;
const int xx[] = {1, -1, 0, 0}, yy[] = {0, 0, 1, -1};
long long pow(long long a, long long b, long long p) {
  long long sum = 1;
  for (a %= p; b; a = a * a % p, b >>= 1)
    if (b & 1) sum = sum * a % p;
  return sum;
}
char ch;
void rd(int &x) {
  for (ch = getchar(); ch < '0'; ch = getchar())
    ;
  for (x = 0; ch >= '0'; ch = getchar()) x = x * 10 + ch - '0';
}
long long phi(long long n) {
  long long i, re = n;
  for (i = 2; i * i <= n; i++)
    if (n % i == 0) {
      re = re / i * (i - 1);
      while (n % i == 0) n /= i;
    }
  if (n > 1) re = re / n * (n - 1);
  return re % 1000000007;
}
void exgcd(long long a, long long b, long long &x, long long &y) {
  if (!b) {
    x = 1;
    y = 0;
    return;
  }
  exgcd(b, a % b, y, x);
  y -= x * (a / b);
}
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
int T, n, k, m, u, o, w, x, y, i, j, tot, cnt[1111111];
long long A, B, C, ans;
double f[1111111], an, a[22], gl[1111111];
int main() {
  scanf("%d%d", &n, &k);
  for (i = 1; i <= n; i++) {
    scanf("%lf", &a[i]);
    if (a[i] > 1e-8) w++;
  }
  k = min(k, w);
  for (i = 1; i < 1 << n; i++) {
    cnt[i] = cnt[i - (i & -i)] + 1;
    for (j = 1; j <= n; j++)
      if (i >> (j - 1) & 1) gl[i] += a[j];
  }
  for (x = 1; x <= n; x++) {
    an = 0;
    for (u = 0; u < 1 << n; u++) f[u] = 0;
    f[0] = a[x];
    for (u = 0; u < 1 << n; u++)
      if (cnt[u] <= k - 2) {
        for (o = 1; o <= n; o++)
          if (o != x)
            if (!(u >> (o - 1) & 1)) {
              w = u + (1 << (o - 1));
              f[w] += f[u] * a[o] / (1 - gl[w]);
            }
      }
    for (u = 0; u < 1 << n; u++) an += f[u];
    printf("%.8lf ", an);
  }
}
