#include <bits/stdc++.h>
#define ll long long
#define ri register int
#define ii inline int
#define iv inline void
#define fore(i, j, k, l) for(ri i = j; i <= k; i += l)
#define erof(i, j, k, l) for(ri i = j; i >= k; i -= l)
#define $ std::
#define insy $ ios::sync_with_stdio(0)
#define ctie $ cin.tie(0),$ cout.tie(0)
#define newbee insy,ctie
#define rt(x) return x
#define mt(a, b) memset(a, b, sizeof(a));
ll prime[1001010],cnt,f[1001010],a[1001010],n;
bool flags[1001010];
ll primes(ll x){
mt(flags, 1);
fore(i, 2, x, 1){
if(flags[i]){
fore(j, i * 2, x, i){
flags[j] = 0;
}
}
}
ll k = 0;
fore(i, 2, x, 1){
if(flags[i]){
prime[++cnt] = i;
}
}
rt(k);
}
int main()
{
mt(f, 0);
f[0] = 1;
$ cin >> n;
ll p=primes(n);
fore(i, 1, p, 1){
fore(j, a[i], n, 1){
f[j] += f[j - a[i]];
}
}
$ cout<<f[n];
return 0;
}