#include <bits/stdc++.h>
using namespace std;
const long double eps = 1e-9, pi = acos(-1.0);
namespace std {
bool operator<(const complex<long double> &lhs,
               const complex<long double> &rhs) {
  if (lhs.real() < rhs.real() - eps) return true;
  if (lhs.real() > rhs.real() + eps) return false;
  return lhs.imag() < rhs.imag();
}
}  // namespace std
complex<long double> input_point() {
  long double x, y;
  cin >> x >> y;
  return complex<long double>(x, y);
}
bool eq(long double a, long double b) { return (abs(a - b) < eps); }
long double dot(complex<long double> a, complex<long double> b) {
  return real(conj(a) * b);
}
long double cross(complex<long double> a, complex<long double> b) {
  return imag(conj(a) * b);
}
long long W, H, A, B, S;
long double ra, rb;
long double check(long double theta) {
  long double res = 0.0;
  long double x = ra * cos(theta / 2), y = ra * sin(theta / 2);
  long double x2 = sqrt(rb * rb - y * y);
  long double ox = x2 + x;
  long double theta2 = 2 * asin(y / rb);
  long double SAB = 0.5 * ra * ra * sin(theta) + 0.5 * rb * rb * sin(theta2);
  long double S1 = pi * ra * ra * theta / (2 * pi);
  long double S2 = pi * rb * rb * theta2 / (2 * pi);
  res = S1 + S2 - SAB;
  return res;
}
int main(void) {
  cin.tie(0);
  ios::sync_with_stdio(false);
  while (cin >> W >> H >> A >> B >> S, W | H | A | B | S) {
    W = (long double)W, H = (long double)H, A = (long double)A,
    B = (long double)B, S = (long double)S;
    bool f = false;
    if (A > B) {
      swap(A, B);
      f = true;
    }
    ra = sqrt(A / pi);
    rb = sqrt(B / pi);
    long double l = 0, r = 2 * pi;
    for (int i = 0; i < 100; i++) {
      long double m = (l + r) / 2.0;
      long double area = check(m);
      if (area > S) {
        r = m;
        continue;
      }
      if (area < S) {
        l = m;
        continue;
      }
    }
    long double theta = l;
    long double XA, YA, XB, YB;
    XB = rb;
    YB = rb;
    long double x = ra * cos(theta / 2), y = ra * sin(theta / 2);
    long double x2 = sqrt(rb * rb - y * y);
    long double ox = x2 + x;
    bool f2 = false;
    for (long double T = 0.0; T < pi + eps; T += 0.001) {
      long double X = XB + ox * cos(T);
      long double Y = YB + ox * sin(T);
      if (X + ra < W + 0.001 + eps && X - ra > -(0.001 + eps)) {
        if (Y + ra < H + (0.001 + eps) && Y - ra > -(0.001 + eps)) {
          XA = X;
          YA = Y;
          f2 = true;
          break;
        }
      }
    }
    if (!f2) {
      cout << "impossible" << endl;
      continue;
    }
    if (f) {
      swap(XA, XB);
      swap(YA, YB);
    }
    cout << fixed << setprecision(10) << XA << " " << YA << " " << ra << " "
         << XB << " " << YB << " " << rb << endl;
  }
  return 0;
}
