#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstring>
#include<queue>
#include<stack>
#include<cstdlib>
#include<iomanip>
#include<map>
#define int long long
#define db long double
#define pii pair<int,int>
#define up(i,l,r) for(int i=(l);i<=(r);i++)
#define down(i,l,r) for(int i=(l);i>=(r);--i)
#define p_b push_back
#define m_p make_pair
using namespace std;
const int mod=1e9+7;
int qpow(int a,int b,int p){
int ans=1;
for(int i=b;i>0;i>>=1,a=a*a%p)if(b&1)ans=ans*a%p;
return ans;
}
int BSGS(int a,int b,int p){
map<int,int> hsh;
hsh.clear();
int t=sqrt(p)+1;
b%=p;
for(int i=0;i<t;i++){
hsh[b*qpow(a,i,p)%p]=i;
}
a=qpow(a,t,p);
if(a==0){
return b==0?1:-1;
}
for(int i=1;i<=t;i++){;
int cur=qpow(a,i,p);
cout<<(hsh.find(cur)==hsh.end())<<endl;
if(hsh.find(cur)!=hsh.end()){
int j=hsh[cur];
if(i*t-j>=0)return i*t-j;
}
}
return -1;
}
signed main(){
int p,b,n;
cin>>p>>b>>n;
if(BSGS(b,n,p)==-1)cout<<"no solution"<<endl;
else cout<<BSGS(b,n,p);
}