program c;
var a,b,c,ok,i: integer;
    k: longint;
    iterations,w: longint;
    opacne: boolean;

function anab(aa,bb: integer):longint;
var j: integer;
    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 k=0 then exit;
  k:=anab(2,k)div c;
  if c=0 then begin writeln('FOREVER'); continue; end;
  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.