#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <queue>#include <algorithm>#include <cmath>#include <string>#include <map>#include <set>using namespace std;typedef long long LL;void gcd(LL a, LL b, LL &d, LL &x, LL &y) { if(!b) { d = a; x = 1; y = 0; } else { gcd(b, a%b, d, y, x); y-= x*(a/b); }}int main() { LL A, B, C, k, n, x, y, d; while(cin >> A >> B >> C >> k) { if(A == 0 && B == 0 && C == 0 && k == 0) break; n = (1LL << k); LL a = C; LL b = (B-A+n)%n; if(b == 0) { printf("0n"); continue; } gcd(a, n, d, x, y); if(b % d == 0) { LL x0 = (x*(b/d)) % n; LL minn = (x0%(n/d)+n/d)%(n/d); cout << minn << endl; } else printf("FOREVERn"); } return 0;}