#include <bits/stdc++.h>
using namespace std;
double bx, by;
double ra, rb;
double integ(double r, double a) {
  return r * r * (acos(0) - asin(a / r) - .5 * sin(2 * asin(a / r)));
}
double f(double y, double x) {
  double X = hypot(y - by, x - bx);
  if (X > ra + rb) return 0;
  if (X + ra <= rb) return ra * ra * acos(0) * 2;
  return integ(ra, (X * X + ra * ra - rb * rb) / 2 / X) +
         integ(rb, (X * X + rb * rb - ra * ra) / 2 / X);
}
int main() {
  for (int UW, UH, A, B, ACAPB;
       cin >> UW >> UH >> A >> B >> ACAPB, UW | UH | A | B | ACAPB;) {
    bool rev = false;
    if (A > B) {
      swap(A, B);
    }
    ra = sqrt(A / acos(0) / 2), rb = sqrt(B / acos(0) / 2);
    if (rb > min(UW, UH) / 2) goto fail;
    bx = UW - rb, by = UH - rb;
    {
      double lax = ra, lay = ra;
      if (f(lay, lax) > ACAPB) goto fail;
      {
        double hax = bx, hay = by;
        for (int i = 0; i < 10000; i++) {
          double mdax = (lax + hax) / 2, mday = (lay + hay) / 2;
          if (f(mday, mdax) > ACAPB) {
            hax = mdax;
            hay = mday;
          } else {
            lax = mdax;
            lay = mday;
          }
        }
        cout.precision(9);
        if (!rev) {
          cout << fixed << lax << ' ' << lay << ' ' << ra << ' ' << bx << ' '
               << by << ' ' << rb << endl;
        } else {
          cout << fixed << bx << ' ' << by << ' ' << rb << ' ' << lax << ' '
               << lay << ' ' << ra << endl;
        }
        continue;
      }
    }
  fail:
    cout << "impossible" << endl;
  }
}
