#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll add(ll a,ll b,ll MOD) {
a%=MOD;b%=MOD;a += b;
if (a >= MOD) a -= MOD;
return a;
}
inline ll sub(ll a,ll b,ll MOD) {
a%=MOD;b%=MOD;a -= b;
if (a < 0) a += MOD;
return a;
}
inline ll mul(ll a,ll b,ll MOD) {
return a * b % MOD;
}
struct Mat{
int r,c;
vector<vector<ll>> mat;
Mat(int r , int c): r(r) , c(c), mat(r, vector<ll>(c,0)) {}
};
Mat mul_mat(Mat &m1,Mat &m2,ll MOD) {
Mat res(m1.r, m2.c);
for(int i=0;i<res.r;i++) for(int j=0;j<res.c;j++) {
ll sum=0;
for(int k=0;k<m1.c;k++) {
sum+= m1.mat[i][k] * m2.mat[k][j]%MOD;
if(sum>=MOD) sum-=MOD;
}
res.mat[i][j]=sum;
}
return res;
}
Mat I(int n){
Mat res(n,n);
for(int i=0;i<n;i++) res.mat[i][i] = 1;
return res;
}
Mat bin_exp(Mat a , ll b,ll MOD) {
Mat res = I(a.r);
while (b) {
if (b & 1) res =mul_mat(res,a,MOD);
a =mul_mat(a,a,MOD);
b >>= 1;
}
return res;
}
vector<ll> mul_mat_vec(const Mat A, const vector<ll> v,ll MOD) {
int M = A.r;
vector<ll> r(M);
for (int i = 0; i < M; i++) {
ll sum = 0;
for (int j = 0; j < M; j++){
sum+=A.mat[i][j]*v[j]%MOD;
if(sum>=MOD)sum-=MOD;
}
r[i] = sum;
}
return r;
}
int main() {
string x;ll k,m;cin>>x>>k>>m;
ll rem=0;
for(auto ch:x){
rem*=10;
rem+=ch-'0';rem%=m;
}
ll pow10=1;
for(int i=0;i<x.size();i++) pow10=(pow10*10)%m;
Mat trans(2,2);
trans.mat[0][0]=pow10;trans.mat[0][1]=rem;
trans.mat[1][0]=0;trans.mat[1][1]=1;
Mat T=bin_exp(trans,k,m);
vector<ll>base={0,1};
base=mul_mat_vec(T,base,m);
if(base[0]%m==0)cout<<"YES\n";
else cout<<"NO\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CmlubGluZSBsbCBhZGQobGwgYSxsbCBiLGxsIE1PRCkgewogICAgYSU9TU9EO2IlPU1PRDthICs9IGI7CiAgICBpZiAoYSA+PSBNT0QpIGEgLT0gTU9EOwogICAgcmV0dXJuIGE7Cn0KaW5saW5lIGxsIHN1YihsbCBhLGxsIGIsbGwgTU9EKSB7CiAgICBhJT1NT0Q7YiU9TU9EO2EgLT0gYjsKICAgIGlmIChhIDwgMCkgYSArPSBNT0Q7CiAgICByZXR1cm4gYTsKfQppbmxpbmUgbGwgbXVsKGxsIGEsbGwgYixsbCBNT0QpIHsKICAgIHJldHVybiBhICogYiAlIE1PRDsKfQpzdHJ1Y3QgTWF0ewogICAgaW50IHIsYzsKICAgIHZlY3Rvcjx2ZWN0b3I8bGw+PiBtYXQ7CiAgICBNYXQoaW50IHIgLCBpbnQgYyk6IHIocikgLCBjKGMpLCBtYXQociwgdmVjdG9yPGxsPihjLDApKSB7fQp9OwpNYXQgbXVsX21hdChNYXQgJm0xLE1hdCAmbTIsbGwgTU9EKSB7CiAgICBNYXQgcmVzKG0xLnIsIG0yLmMpOwogICAgZm9yKGludCBpPTA7aTxyZXMucjtpKyspIGZvcihpbnQgaj0wO2o8cmVzLmM7aisrKSB7CiAgICAgICAgbGwgc3VtPTA7CiAgICAgICAgZm9yKGludCBrPTA7azxtMS5jO2srKykgewogICAgICAgICAgICBzdW0rPSBtMS5tYXRbaV1ba10gKiBtMi5tYXRba11bal0lTU9EOwogICAgICAgICAgICBpZihzdW0+PU1PRCkgc3VtLT1NT0Q7CiAgICAgICAgfQogICAgICAgIHJlcy5tYXRbaV1bal09c3VtOwogICAgfQogICAgcmV0dXJuIHJlczsKfQpNYXQgSShpbnQgbil7CiAgICBNYXQgcmVzKG4sbik7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKSByZXMubWF0W2ldW2ldID0gMTsKICAgIHJldHVybiByZXM7Cn0KTWF0IGJpbl9leHAoTWF0IGEgLCBsbCBiLGxsIE1PRCkgewogICAgTWF0IHJlcyA9IEkoYS5yKTsKICAgIHdoaWxlIChiKSB7CiAgICAgICAgaWYgKGIgJiAxKSByZXMgPW11bF9tYXQocmVzLGEsTU9EKTsKICAgICAgICBhID1tdWxfbWF0KGEsYSxNT0QpOwogICAgICAgIGIgPj49IDE7CiAgICB9CiAgICByZXR1cm4gcmVzOwp9CnZlY3RvcjxsbD4gbXVsX21hdF92ZWMoY29uc3QgTWF0IEEsIGNvbnN0IHZlY3RvcjxsbD4gdixsbCBNT0QpIHsKICAgIGludCBNID0gQS5yOwogICAgdmVjdG9yPGxsPiByKE0pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNOyBpKyspIHsKICAgICAgICBsbCBzdW0gPSAwOwogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgTTsgaisrKXsKICAgICAgICAgICAgICAgc3VtKz1BLm1hdFtpXVtqXSp2W2pdJU1PRDsKICAgICAgICAgICAgICAgaWYoc3VtPj1NT0Qpc3VtLT1NT0Q7CiAgICAgICAgfQogICAgICAgIHJbaV0gPSBzdW07CiAgICB9CiAgICByZXR1cm4gcjsKfQppbnQgbWFpbigpIHsKCXN0cmluZyB4O2xsIGssbTtjaW4+Png+Pms+Pm07CglsbCByZW09MDsKCWZvcihhdXRvIGNoOngpewoJCXJlbSo9MTA7CgkJcmVtKz1jaC0nMCc7cmVtJT1tOwoJfQoJbGwgcG93MTA9MTsKICAgIGZvcihpbnQgaT0wO2k8eC5zaXplKCk7aSsrKSBwb3cxMD0ocG93MTAqMTApJW07CiAgICBNYXQgdHJhbnMoMiwyKTsKICAgIHRyYW5zLm1hdFswXVswXT1wb3cxMDt0cmFucy5tYXRbMF1bMV09cmVtOwogICAgdHJhbnMubWF0WzFdWzBdPTA7dHJhbnMubWF0WzFdWzFdPTE7CiAgICBNYXQgVD1iaW5fZXhwKHRyYW5zLGssbSk7CiAgICB2ZWN0b3I8bGw+YmFzZT17MCwxfTsKICAgIGJhc2U9bXVsX21hdF92ZWMoVCxiYXNlLG0pOwogICAgaWYoYmFzZVswXSVtPT0wKWNvdXQ8PCJZRVNcbiI7CiAgICBlbHNlIGNvdXQ8PCJOT1xuIjsKCXJldHVybiAwOwp9