program c; var a,b,c,ok,i: longint; k: longint; iterations,w: longint; opacne: longbool; function anab(aa,bb: longint):longint; var j: longint; v: longint; begin v:=2; for j:=2 to bb do v:=v*aa; anab:=v; end; begin repeat iterations:=0; a:=0; b:=0; c:=0; k:=1; opacne:=false; readln(a,b,c,k); ok:=k; if (a=b)and(a=0)then begin writeln(0); continue; end; if c=0 then begin writeln('FOREVER'); continue; end; k:=anab(2,k)div c; if (abs(b-a) mod c <> 0) then begin writeln('FOREVER');continue; end else begin iterations:=0; if a>b then begin i:=a; a:=b; b:=i; opacne:=true end; writeln('a= ',a,' b= ',b,' k= ',k); {while(a<>b)do begin iterations:=iterations+1; a:=a+c; if a>k then a:=(k-a)+c; end;} iterations:=(b-a)div c; { writeln('ite ',iterations);} if opacne then iterations:=k-iterations; writeln(iterations); end; until (a=0)and(b=0)and(c=0)and(k=0); end.