#include <bits/stdc++.h>
using namespace std;
const long double EPS = 1e-10;
const long double PI = acos((long double)(-1));
bool solve() {
  long double w, h, a, b, ab;
  cin >> w >> h >> a >> b >> ab;
  if (!w) return false;
  bool ch = (a > b);
  if (ch) {
    swap(a, b);
  }
  long double ra = sqrt(a / PI);
  long double rb = sqrt(b / PI);
  if (min(w, h) < 2 * ra || min(w, h) < 2 * rb) {
    cout << "impossible" << endl;
    return true;
  }
  long double l = 0, r = PI;
  for (int i = 0; i < 100; i++) {
    long double md1 = (l + r) / 2;
    long double md2 = asin(ra / rb * sin(md1));
    long double sm = 0;
    sm += ra * ra * (md1 - sin(md1) * cos(md1));
    sm += rb * rb * (md2 - sin(md2) * cos(md2));
    if (sm < ab) {
      l = md1;
    } else {
      r = md1;
    }
  }
  long double l1 = l;
  long double l2 = asin(ra / rb * sin(l1));
  long double rc = ra * cos(l1) + rb * cos(l2);
  if (abs(complex<long double>(w - ra - rb, h - ra - rb)) < rc) {
    cout << "impossible" << endl;
    return true;
  }
  complex<long double> ap, bp;
  ap = complex<long double>(ra, ra);
  bp = ap + polar(rc, arg(complex<long double>(w - ra - rb, h - ra - rb)));
  if (ch) {
    swap(ap, bp);
    swap(ra, rb);
  }
  printf("%.10Lf %.10Lf %.10Lf %.10Lf %.10Lf %.10Lf\n", ap.real(), ap.imag(),
         ra, bp.real(), bp.imag(), rb);
  return true;
}
int main() {
  while (solve()) {
  }
  return 0;
}
