1 #include <iostream>
   2 #include <sstream>
   3 #include <set>
   4 #include <string>
   5 #include <algorithm>
   6 #include <vector>
   7 using namespace std;
   8 
   9 #define GI ({long long int _t; scanf("%lld", &_t); _t;})
  10 #define FOR(i, a, b) for (int i=a; i<b; i++)
  11 #define REP(i, a) FOR(i, 0, a)
  12 template<class T> string toString(T n){ostringstream ost;ost<<n;ost.flush();return ost.str();}
  13 int toInt(string s){int r=0;istringstream sin(s);sin>>r;return r;}
  14 #define DBG(x) cout << #x << "::" << x << endl;
  15 #define DBGV(_v) { REP(_i, _v.size()) { cout << _v[_i] << "\t";} cout << endl;}
  16 
  17 int main() {
  18 	long long int z, i, m, l, kase=0;
  19 	while (scanf("%lld%lld%lld%lld", &z, &i, &m, &l) != -1 && z != 0) {
  20 		set <long long int> cycle;
  21 		int res = 0;
  22 		l = (z*l+i)%m;
  23 		while (cycle.find(l) == cycle.end()) {
  24 			cycle.insert(l);
  25 			l = (z*l+i)%m;
  26 			res++;
  27 		}
  28 		kase++;
  29 		printf("Case %lld: %d\n", kase, res);
  30 	}
  31 	return 0;
  32 }