const e=0.00001;
type c=record re:real;
              im:real;
              end;
var
n:longint;
    sx,xn2,x2,x,xn,xn1:c;

begin

read(x.re,x.im);
x2.re:=x.re*x.re-x.im*x.im;
x2.im:=2*x.im*x.re;
xn.re:=x2.re*x.re-x2.im*x.im;
xn.im:=x2.re*x.im+x.re*x2.im;
xn.re:=xn.re/6;
xn.im:=xn.im/6;
sx.re:=x.re+xn.re;
sx.im:=x.im+xn.im;

N:=3;

while sqrt(abs(sqr(xn.re)+sqr(xn.im)))>e do begin
xn2:=xn;
xn.re:=x2.re*xn2.re-x2.im*xn2.im;
xn.im:=x2.re*xn2.im+x2.im*xn2.re;
Xn.re:=xn.re/((n+1)*(n+2));
Xn.im:=xn.im/((n+1)*(n+2));
n:=n+2;
sx.re:=sx.re+xn.re;
sx.im:=sx.im+xn.im;


end;

write('z=',sx.re:2:4,'+',sx.im:2:4,'i');
readln;
readln;
end.