#include <cmath>
#include <cstdio>
#include <algorithm>

#define rep(i,n) for(int i=0;i<(n);i++)

using namespace std;

const double EPS=1e-8;
const double PI=acos(-1);

struct point{
	double x,y;
	point():x(0),y(0){}
	point(double x,double y):x(x),y(y){}
	point operator+(const point &a)const{ return point(x+a.x,y+a.y); }
	point operator-(const point &a)const{ return point(x-a.x,y-a.y); }
};

point operator*(double c,const point &a){ return point(c*a.x,c*a.y); }

double abs(const point &a){ return sqrt(a.x*a.x+a.y*a.y); }

struct circle{
	point c;
	double r;
	circle():c(point(0,0)),r(0){}
	circle(const point &c,double r):c(c),r(r){}
};

double area(double a,double b,double c){
	return sqrt((a+b+c)*(b+c-a)*(c+a-b)*(a+b-c))/4;
}

double common_area(const circle &C1,const circle &C2){
	double d=abs(C1.c-C2.c);
	double r1=C1.r,r2=C2.r;
	if     (r1+r2<d+EPS) return 0;
	else if(d+r1<r2+EPS) return PI*r1*r1;
	else if(d+r2<r1+EPS) return PI*r2*r2;
	else{
		double theta1=acos((r1*r1+d*d-r2*r2)/(2*r1*d));
		double theta2=acos((r2*r2+d*d-r1*r1)/(2*r2*d));
		return r1*r1*theta1+r2*r2*theta2-2*area(r1,r2,d);
	}
}

int main(){
	for(int h,w,a,b,acapb;~scanf("%d%d%d%d%d",&w,&h,&a,&b,&acapb);){
		if(w==0) break;

		bool flag=false;
		if(a<b) swap(a,b), flag=true;

		circle Ca,Cb;
		Ca.r=sqrt(a/PI);
		Ca.c=point(Ca.r,Ca.r);
		Cb.r=sqrt(b/PI);
		Cb.c=point(w-Cb.r,h-Cb.r);

		// 円がそもそも長方形に入らないとき ( 入力の制約で排除すべき? )
		if(2*Ca.r>min(h,w)+EPS
		|| 2*Cb.r>min(h,w)+EPS){ puts("impossible"); continue; }

		if(common_area(Ca,Cb)>acapb+EPS){ puts("impossible"); continue; }

		// binary search
		double lo=0,hi=1;
		rep(_,50){
			double mi=(lo+hi)/2;
			double t=mi;
			circle C((1-t)*Ca.c+t*Cb.c,Cb.r);
			if(common_area(Ca,C)<acapb) hi=mi; else lo=mi;
		}
		Cb=circle((1-lo)*Ca.c+lo*Cb.c,Cb.r);

		if(flag) swap(Ca,Cb);

		printf("%.9f %.9f %.9f %.9f %.9f %.9f\n",Ca.c.x,Ca.c.y,Ca.r,Cb.c.x,Cb.c.y,Cb.r);
	}

	return 0;
}