#include<bits/stdc++.h>

#define EQ(a,b) (abs((a)-(b)) < EPS*10)
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define fs first
#define sc second
#define pb push_back
#define sz size()
#define all(a) (a).begin(),(a).end()

using namespace std;
typedef long double D;
typedef complex<D> P;
typedef pair<P,D> C;

const D EPS = 1e-8;
const D PI = acos(-1);
inline D arg(D a,D b,D c){return acos( (b*b+c*c-a*a)/(2*b*c) );}

inline D area_cir(C c){return PI * c.sc * c.sc;}

inline D intersection_area(C a, C b){
  D d = abs(a.fs-b.fs);
  if(a.sc + b.sc < d + EPS)return 0;
  if(a.sc < b.sc)swap(a,b);
  if(b.sc + d  < a.sc + EPS || b.sc < EPS)return area_cir(b);

  D t1 = arg(b.sc,a.sc,d), t2 = arg(a.sc,b.sc,d);
  D tri = ( a.sc*a.sc*sin(t1*2) + b.sc*b.sc*sin(t2*2) )/2.0;
  return a.sc*a.sc*t1 + b.sc*b.sc*t2 - tri;
}

int main(){
  D w,h,A,B,AB;
  cout << fixed << setprecision(9);
  while(cin >> w >> h >> A >> B >> AB, w!=0){

    D ar = sqrt(A/PI), br = sqrt(B/PI);
    bool change = ar<br;
    if(change){
      swap(ar,br);
    }

    C a = C(P(ar,ar),ar), b;
    
    P l = P(br,br), r = P(w-br,h-br);
    for(int azu=0;azu<300;azu++){
      P m = 0.5L*(l+r);
      b = C(m,br);
      if(intersection_area(a,b) < AB - EPS)r = m;
      else l = m;
    }

    b = C(l,br);
    if(w+EPS<ar*2 || h+EPS<ar*2 || l.real()-br<-EPS || l.imag()-br<-EPS || w+EPS<l.real()+br || h+EPS<l.imag()+br){
      cout << "impossible" << endl;
    }else if(!EQ(intersection_area(a,b),AB)){
      cout << "impossible" << endl;
    }else{
      if(change){
	swap(a,b);
      }

      cout << a.fs.real() << " " << a.fs.imag() << " " << a.sc << " "
	   << b.fs.real() << " " << b.fs.imag() << " " << b.sc << endl;
    }
  }
}