#include <bits/stdc++.h>
using namespace std;
double prob[1 << 20];
bool comp(int i1, int i2) {
  return __builtin_popcount(i1) < __builtin_popcount(i2);
}
int main() {
  int n, k;
  cin >> n >> k;
  vector<double> p;
  int nonzeros = 0;
  for (int i = 0; i < (n); ++i) {
    double pro;
    cin >> pro;
    p.push_back(pro);
    if (pro != 0) nonzeros++;
  }
  prob[0] = 1;
  vector<int> ord;
  for (int mask = 0; mask <= (1 << n) - 1; mask++) {
    ord.push_back(mask);
  }
  sort((ord).begin(), (ord).end(), comp);
  for (int i = 0; i < (int((ord).size())); ++i) {
    int mask = ord[i];
    double otro = 0;
    for (int j = 0; j < (n); ++j) {
      if ((mask & (1 << j)) == 0) {
        otro += p[j];
      }
    }
    if (otro == 0) continue;
    for (int j = 0; j < (n); ++j) {
      if ((mask & (1 << j)) == 0) {
        int newmask = mask | (1 << j);
        prob[newmask] += prob[mask] * (p[j] / otro);
      }
    }
  }
  double ans[20];
  for (int i = 0; i < (20); ++i) ans[i] = 0;
  for (int i = 0; i < (int((ord).size())); ++i) {
    if (__builtin_popcount(ord[i]) != min(k, nonzeros)) continue;
    int mask = ord[i];
    for (int j = 0; j < (n); ++j) {
      if ((mask & (1 << j))) {
        ans[j] += prob[mask];
      }
    }
  }
  for (int i = 0; i < (n); ++i) {
    cout << setprecision(20) << ans[i] << " ";
  }
  cout << endl;
}
