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.