http://acm.hust.edu.cn/vjudge/contest/view.action?cid=29821#problem/F
// File Name: bo_jwolf6.cpp
// Author: rudolf
// Created Time: 2013年08月22日 星期四 10:47:39
#include<vector>
#include<list>
#include<map>
#include<set>
#include<deque>
#include<stack>
#include<bitset>
#include<algorithm>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>
using namespace std;
int main()
{
int z , i , m , l , ans , sum , hash[ 10005 ] , Case = 1 ;
while( cin >> z >> i >> m >> l && ( z + i + m + l ) )
{
memset( hash , false , sizeof( hash ) ) ;
ans = 0 ;
do
{
l = ( z * l + i ) % m ;
hash[ l ] ++ ;
ans++ ;
}
while( hash[ l ] == 1 ) ;
cout << "Case " << Case++ << ": " << ans - 1 << endl ;
}
return 0;
}