#include <cstdio>
#include <iostream>
#include <string>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <climits>
#include <numeric>
#include <cstring>
#include <utility>
#include <bitset>
#include <ctime>
#include <cmath>
#include <complex>
#include <iomanip>
using namespace std;

typedef long long LL;
typedef pair<int,int> pii;
typedef vector<vector<int> > vvint;

typedef long double D;
typedef complex<D> P;
typedef const P &rP;

#define ALL(v) (v).begin(),(v).end()

const D EPS = 1e-9L;


D pi;

D dot(rP a, rP b){
	return real(a) * real(b) + imag(a) * imag(b);
}

D cross(rP a, rP b){
	return real(a) * imag(b) - imag(a) * real(b);
}

D sqtri(rP a, rP b, rP c){
	return cross(b - a, c - a) * 0.5;
}

vector<P> intrccl(rP p1, D r1, rP p2, D r2){
	vector<P> ret;
	D d = abs(p2 - p1);
	if(d < EPS){ return ret; }
	D phi = arg(p2 - p1);
	D ct = (d * d + r1 * r1 - r2 * r2) / (2.0 * d * r1);
	if(abs(ct) > 1.0){ return ret; }
	D theta = acos(ct);
	ret.resize(2);
	ret[0] = p1 + polar(r1, phi - theta);
	ret[1] = p1 + polar(r1, phi + theta);
	return ret;
}

D difangle(D a, D b){
	b = b - a + 4.0 * pi;
	while(b >= 2.0 * pi){ b -= 2.0 * pi; }
	return b;
}

D sqintr(D ra, D rb, D dist){
	P ptd(dist);

	if(ra < rb){ swap(ra, rb); }
	vector<P> intr = intrccl(P(), ra, ptd, rb);
	if(intr.empty()){
		if(dist < ra + rb - EPS){
			return rb * rb * pi;
		}
		return 0.0;
	}

	if(imag(intr[0]) > imag(intr[1])){
		swap(intr[0], intr[1]);
	}


	D da1 = difangle(arg(intr[0]), arg(intr[1]));
	D s1 = ra * ra * 0.5 * da1 - sqtri(P(), intr[0], intr[1]);
	D da2 = difangle(arg(intr[1] - ptd), arg(intr[0] - ptd));
	D s2 = rb * rb * 0.5 * da2 - sqtri(ptd, intr[1], intr[0]);

	return s1 + s2;
}


D w, h, sa, sb, sab;


void solve(){
	bool sw = false;
	if(sa < sb){
		swap(sa, sb);
		sw = true;
	}

	D ra = sqrt(sa / pi), rb = sqrt(sb / pi);

	if(ra * 2.0 > min(w, h)){
		cout << "impossible\n";
		return;
	}

	D left = max(ra - rb - 1e-6L, 0.0L), right = ra + rb + 1e-6L;
	for(int tm = 300; --tm; ){
		D mid = (left + right) * 0.5;
		D sq = sqintr(ra, rb, mid);
		if(sq > sab){
			left = mid;
		}
		else{
			right = mid;
		}
	}

	P pa(ra, ra);
	P u(w - ra - rb, h - ra - rb);
	if(norm(u) > EPS){
		u /= abs(u);
	}
	P pb = pa + u * left;

	if(real(pb) + rb > w || imag(pb) + rb > h){
		cout << "impossible\n";
		return;
	}
	
	if(sw){
		swap(pa, pb);
		swap(ra, rb);
	}
	cout << real(pa) << ' ' << imag(pa) << ' ' << ra << ' ';
	cout << real(pb) << ' ' << imag(pb) << ' ' << rb << endl;
}


int main(){
	pi = acos(-1.0L);
	cout << fixed << setprecision(15);
	cerr << fixed << setprecision(6);
	
	while(cin >> w >> h >> sa >> sb >> sab, w){
		solve();
	}
}