#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
namespace std {
bool operator<(const complex<double>& a, const complex<double>& b) {
  return a.real() != b.real() ? a.real() < b.real() : a.imag() < b.imag();
}
bool operator==(const complex<double>& a, const complex<double>& b) {
  return abs(a - b) < (1e-10);
}
}  // namespace std
double dot(complex<double> a, complex<double> b) {
  return a.real() * b.real() + a.imag() * b.imag();
}
double cross(complex<double> a, complex<double> b) {
  return a.real() * b.imag() - a.imag() * b.real();
}
complex<double> n_vector(complex<double> a) {
  return a * complex<double>(0, 1) / abs(a);
}
vector<complex<double> > cpcc(pair<complex<double>, double> a,
                              pair<complex<double>, double> b) {
  double d = abs(a.first - b.first), ra = a.second, rb = b.second;
  double t = (ra * ra - rb * rb + d * d) / 2 / d, h = sqrt(ra * ra - t * t);
  complex<double> m =
      t / abs(b.first - a.first) * (b.first - a.first) + a.first;
  vector<complex<double> > cp(2, m);
  complex<double> n = n_vector(a.first - b.first);
  cp[0] -= h * n;
  cp[1] += h * n;
  return cp;
}
double common_area(pair<complex<double>, double> a,
                   pair<complex<double>, double> b) {
  vector<complex<double> > cp = cpcc(a, b);
  double ra = a.second, rb = b.second,
         theta_a = abs(arg(cp[0] - a.first) - arg(cp[1] - a.first)),
         theta_b = abs(arg(cp[0] - b.first) - arg(cp[1] - b.first));
  theta_a = min(theta_a, 2 * pi - theta_a),
  theta_b = min(theta_b, 2 * pi - theta_b);
  return theta_a / 2.0 * ra * ra + theta_b / 2.0 * rb * rb -
         0.5 * abs(cross(cp[0] - a.first, cp[1] - a.first)) -
         0.5 * abs(cross(cp[0] - b.first, cp[1] - b.first));
}
int main() {
  int w, h, a, b, c;
  while (cin >> w >> h >> a >> b >> c, w) {
    bool f = false;
    if (a < b) {
      swap(a, b);
      f = true;
    }
    double ra = sqrt(a / pi), rb = sqrt(b / pi);
    if (2 * ra > min(w, h) + (1e-10) || c > b) {
      cout << "impossible" << endl;
      continue;
    }
    complex<double> s(ra, ra), t(w - rb, h - rb);
    pair<complex<double>, double> ca(s, ra), cb(t, rb);
    if (common_area(ca, cb) > c + (1e-10)) {
      cout << "impossible" << endl;
      continue;
    }
    complex<double> ok = s, ng = t, m;
    for (int i = 0; i < 1e5; ++i) {
      m = (ok + ng) / 2.0;
      if (common_area(ca, pair<complex<double>, double>(m, rb)) < c)
        ng = m;
      else
        ok = m;
    }
    if (f)
      printf("%.9f %.9f %.9f %.9f %.9f %.9f\n", m.real(), m.imag(), rb,
             s.real(), s.imag(), ra);
    else
      printf("%.9f %.9f %.9f %.9f %.9f %.9f\n", s.real(), s.imag(), ra,
             m.real(), m.imag(), rb);
  }
  return 0;
}
