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

function anab(a,b: integer):longint;
var j: integer;
    v: longint;
begin
v:=2;
for j:=2 to b do v:=v*a;
anab:=v;
end;
    
begin

 repeat
  readln(a,b,c,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;
  
  {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;
  if opacne then iterations:=k-iterations;
  writeln(iterations);
  
  end;
  


 until (a=0)and(b=0)and(c=0)and(k=0);

end.