//This is my code
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define d7 1000000007
using namespace std;
ll modexp(ll x, ll n){
if(n==0) return 1;
ll u=modexp(x,n/2);
u=(uu);
if(n%2==1) u=(ux);
return u;
}
ll N=1e5+4;
vector is_prime(N+1, true);
void validateprime(ll n){
is_prime[0] = is_prime[1] = false;
for (ll i = 2; i <= n; i++) {
if (is_prime[i] && (long long)i * i <= n) {
for (ll j = i * i; j <= n; j += i)
is_prime[j] = false;
}
}
}
vector primes;
void storePrime(ll n){
validateprime(n);
for(ll i=0;i<n;i++){
if(is_prime[i+1]){primes.push_back(i+1);}
}
}
bool isPrime(long long k){
if(k<=1){return false;}
if(k==2){return true;}
if(k%2==0){return false;}
long long i = 3;
while (i*i <= k) {if (k % i == 0) {return false;}i += 2;}
return true;
}
int main(int argc, const char * argv[]) {
validateprime(100000);
storePrime(100000);
ll n;cin>>n;
ll k=n;
//for(ll i=0;i<100;i++){cout<<v[i]<<" ";}
map<ll,ll> mp;
for(ll i=0;i<primes.size();i++){
if(n%primes[i]==0){
//cout<<primes[i]<<" ";
while(n%primes[i]==0&&n>1){
n/=primes[i];
mp[primes[i]]++;
}
}
}
if(isPrime(n)){
mp[n]++;
}
if(mp.empty()){
cout<<1;
}else{
ll sum1=0;
for(auto u:mp){
ll op=u.first;
ll op1=0;
while(op>0){
op1+=(op%10);
op/=10;
}
sum1+=op1*mp[u.first];
}
ll sum2=0;
while(k>0){
sum2+=(k%10);
k/=10;
}
//cout<<sum1<<" "<<sum2<<" ";
if(sum2==sum1){
cout<<1;
}else{cout<<0;}
}
return 0;
}