#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-8;
const double PI = acos(-1.0);
int Uw, Uh, A, B, AB;
struct Point {
  double x, y;
  Point() {}
  Point(double _x, double _y) : x(_x), y(_y) {}
  double Dis() { return sqrt(x * x + y * y); }
  friend Point operator+(const Point &a, const Point &b) {
    return Point(a.x + b.x, a.y + b.y);
  }
  friend Point operator-(const Point &a, const Point &b) {
    return Point(a.x - b.x, a.y - b.y);
  }
  friend Point operator*(const Point &a, const double &b) {
    return Point(a.x * b, a.y * b);
  }
  friend Point operator/(const Point &a, const double &b) {
    return Point(a.x / b, a.y / b);
  }
} l, r, mid;
double RA, RB;
struct Circle {
  Point O;
  double R;
  Circle() {}
  Circle(Point _O, double _R) : O(_O), R(_R) {}
} CA;
double S(Circle X, Circle Y) {
  if (X.R < Y.R) {
    swap(X, Y);
  }
  double d = (X.O - Y.O).Dis();
  if (d > X.R + Y.R) {
    return 0;
  }
  if (Y.R + d < X.R) {
    return PI * Y.R * Y.R;
  }
  double alpha = acos((X.R * X.R + d * d - Y.R * Y.R) / (2 * X.R * d));
  double beta = acos((Y.R * Y.R + d * d - X.R * X.R) / (2 * Y.R * d));
  return alpha * X.R * X.R + beta * Y.R * Y.R - X.R * d * sin(alpha);
}
int main() {
  while (scanf("%d%d%d%d%d", &Uw, &Uh, &A, &B, &AB) &&
         (Uw || Uh || A || B || AB)) {
    RA = sqrt(A / PI);
    RB = sqrt(B / PI);
    CA = Circle(Point(RA, RA), RA);
    l = Point(RA, RA);
    r = Point(Uw - RB, Uh - RB);
    if (S(CA, Circle(r, RB)) > AB) {
      printf("impossible\n");
      continue;
    }
    while ((r - l).Dis() > EPS) {
      mid = (l + r) / 2;
      if (S(CA, Circle(mid, RB)) < AB) {
        r = mid;
      } else {
        l = mid;
      }
    }
    printf("%f %f %f %f %f %f\n", RA, RA, RA, l.x, l.y, RB);
  }
  return 0;
}
