#include<bits/stdc++.h>
#define int long long
using namespace std;
int a,b,p;
int gcd(int a,int b) {
if(b==0) return a;
return gcd(b,a%b);
}
int ksm(int a,int b) {
int ans=1;
while(b) {
if(b&1) ans=ans*a%p;
a=a*a%p;
b>>=1;
}
return ans;
}
map<int,int>mp;
int bsgs(int a,int b,int m) {
mp.clear();
int s=1,t=sqrt(m);
for(int y=0;y*y<=m;y++) {
mp[b*s%m]=y;
s=s*a%m;
}
int jl=ksm(a,t);
s=jl;
for(int x=1;x<=t;x++) {
if(mp[s]) return x*t-mp[s];
s=s*jl%m;
}
}
signed main() {
while(1) {
scanf("%lld%lld%lld",&a,&p,&b);
if(a==0) break ;
int np=p,nb=b,d=1,sum=0,f=0;
while(gcd(a,np)!=1) {
int dd=gcd(a,np);
if(b%d!=0) {
printf("No Solution\n");
f=1;
break ;
}
d*=dd,sum++;
np/=dd,nb/=dd;
}
if(f==1) continue ;
int na=1;
for(int i=0;i<=sum;i++) {
if(na%p==b%p) {
printf("%lld\n",i);
f=1;
break ;
}
if(i!=sum) na=na*a%p;
}
if(f==1) continue ;
b/=d,p/=d;
printf("%lld\n",bsgs(a,b*na%p*ksm(d,p-2)%p,p)+sum,sum);
}
return 0;
}