#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long LL;
#define hmod 1389001
LL A,B,mod;
inline LL Pow(LL a,LL b)
{
LL ret=1;
while(b)
{
if(b&1)
ret=ret*a%mod;
a=a*a%mod;
b>>=1;
}
return ret;
}
int head[hmod],a[hmod][2],nt[hmod],cnt;
inline LL Find(LL x)
{
LL x1=x%hmod;
for(int i=head[x1];i!=-1;i=nt[i])
if(a[i][0]==x)
return i;
return -1;
}
inline void insert(LL x,LL v1)
{
LL x1=x%hmod;
a[++cnt][0]=x;
a[cnt][1]=v1;
nt[cnt]=head[x1];
head[x1]=cnt;
}
int main()
{
while(~scanf("%lld%lld%lld",&mod,&A,&B))
{
if(B==1)
{
printf("0\n");
continue;
}
memset(head,-1,sizeof(head));
cnt=0;
LL m=(LL)ceil(sqrt(mod));
for(LL i=0,x=B;i<m;i++)
{
LL x1=Find(x);
if(x1==-1)
insert(x,i);
else
a[x1][1]=i;
x=x*A%mod;
}
LL b1=Pow(A,m);
bool f1=0;
for(LL i=1,x=1;i<=m;i++)
{
x=x*b1%mod;
int x1=Find(x);
if(x1!=-1)
{
f1=1;
printf("%lld\n",i*m-a[x1][1]);
break;
}
}
if(!f1)
printf("no solution\n");
}
return 0;
}