#include <bits/stdc++.h>
using namespace std;
bool invalid(double x, double y, double r, double w, double h) {
  return x - r < -1e-8 || y - r < -1e-8 || x + r > w + 1e-8 || y + r > h + 1e-8;
}
double dis(double x, double y) { return sqrt(x * x + y * y); }
double check(double x1, double y1, double x2, double y2, double r1, double r2) {
  double s = dis(x2 - x1, y2 - y1);
  if (r1 + r2 < s)
    return 0;
  else if (r2 - r1 > s)
    return acos(-1.0) * r1 * r1;
  else if (r1 - r2 > s)
    return acos(-1.0) * r2 * r2;
  double q1 = acos((r1 * r1 + s * s - r2 * r2) / (2 * r1 * s));
  double q2 = acos((r2 * r2 + s * s - r1 * r1) / (2 * r2 * s));
  return (r1 * r1 * q1 + r2 * r2 * q2 - r1 * s * sin(q1));
}
int main() {
  double w, h, a, b, a_b;
  while (1) {
    scanf("%lf%lf%lf%lf%lf", &w, &h, &a, &b, &a_b);
    if (fabs(w + h + a + b + a_b) < 1e-8) break;
    int flag = 0;
    if (a < b) {
      swap(a, b);
      flag = 1;
    }
    double ra, rb;
    ra = sqrt((a) / acos(-1.0));
    rb = sqrt((b) / acos(-1.0));
    double oax = ra, oay = ra;
    if (invalid(oax, oay, ra, w, h)) {
      puts("impossible");
      continue;
    }
    double l = 0, r = dis(w - oax, h - oay);
    double dd = r;
    for (int i = 0; i <= 100; i++) {
      double mid = (l + r) / 2.0;
      double xx = mid * (w - oax) / dd + oax;
      double yy = mid * (h - oay) / dd + oay;
      if (check(xx, yy, oax, oay, rb, ra) < a_b + 1e-8)
        r = mid;
      else
        l = mid;
    }
    double obx = l * (w - oax) / dd + oax;
    double oby = l * (h - oay) / dd + oay;
    if (invalid(obx, oby, rb, w, h)) {
      puts("impossible");
      continue;
    }
    if (flag) {
      swap(oax, obx);
      swap(oay, oby);
      swap(ra, rb);
    }
    printf("%.10f %.10f %.10f %.10f %.10f %.10f\n", oax, oay, ra, obx, oby, rb);
  }
}
