#include #include #include #include #include typedef long long ll; /* TODO */ #if 0 #define dpf(x) printf x #else #define dpf(x) (void)0 #endif #define dp dpf #define adelib(a,b) (!((b) % (a))) ll compute( ll diff, ll c, ll m ) { dpf(("x\n")); if (adelib(c,diff)) return diff/c; if (adelib(c,m)) dpf(("BOOM\n")); return ((m/c)+1) * compute( diff, c - (m % c), m ); } int main(void) { ll a, b, c, k, m , diff; while (1) { scanf("%lld %lld %lld %lld\n",&a,&b,&c,&k); if (a == 0 && b == 0 && c == 0 && k == 0) break; if (a == b) { puts("0"); continue; } m = 1LL << k; diff = (b - a + m) % m; if (!c || (!adelib(c,diff) && adelib(c,m))) { puts("FOREVER"); continue; } printf("%lld\n",compute(diff,c,m)); } return 0; }