#include <bits/stdc++.h>
long double eps = 1e-8;
int main() {
  int n, k;
  std::cin >> n >> k;
  std::vector<long double> probabilities(n);
  for (long double& probability : probabilities) {
    std::cin >> probability;
  }
  long long max_size = (1 << n);
  std::vector<std::vector<long double>> dp(n,
                                           std::vector<long double>(max_size));
  std::vector<long double> result(n, 0.0);
  for (int i = 0; i < n; ++i) {
    dp[i][0] = probabilities[i];
    result[i] += dp[i][0];
  }
  for (int mask = 1; mask < max_size; ++mask) {
    long double mask_probability = 0;
    if (__builtin_popcount(mask) >= k) {
      continue;
    }
    for (int i = 0; i < n; ++i) {
      if (mask & (1 << i)) {
        mask_probability += probabilities[i];
      }
    }
    for (int k = 0; k < n; ++k) {
      if (mask & (1 << k)) {
        continue;
      }
      long double sum = 0;
      for (int j = 0; j < n; ++j) {
        if (!(mask & (1 << j))) {
          continue;
        }
        sum += dp[j][mask - (1 << j)];
      }
      if (mask_probability > 1.0 - eps) {
        sum = 0;
      } else {
        sum *= probabilities[k] / (1 - mask_probability);
      }
      dp[k][mask] = sum;
      result[k] += dp[k][mask];
    }
  }
  std::cout.precision(20);
  std::cout << std::fixed;
  for (int i = 0; i < n; ++i) {
    std::cout << result[i] << ' ';
  }
  std::cout << std::endl;
  return 0;
}
