#include unsigned int MaxVal( int k ) { unsigned int maxval = 0; for (int i = 0; i < k; i++) { maxval = maxval << 1; maxval += 1; } return maxval; } int main(void) { unsigned int a, b, c, k = 1; unsigned int count, maxval; unsigned int i; scanf ("%u %u %u %u", &a, &b, &c, &k); while (!(a == 0 && b == 0 && c == 0 && k == 0)) { count = 0; maxval = MaxVal(k); i = a; if (a == b) { printf("0\n"); scanf ("%u %u %u %u", &a, &b, &c, &k); continue; } if (c == 0) { printf("FOREVER\n"); scanf ("%u %u %u %u", &a, &b, &c, &k); continue; } while((i & maxval) != b) { i += c; //printf("--%u %u %u %u\n", a, b, c, i); //i &= maxval; if ((i & maxval) == a) break; } count = (i - a) / c; i &= maxval; if (i == a) { if (i == b) { printf("0\n"); } else { printf("FOREVER\n"); } } else { printf("%u\n", count); } scanf ("%u %u %u %u", &a, &b, &c, &k); } return 0; }