#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <fstream>
#include <queue>
#define rep(i, l, r) for(int i = l; i <= r; i++)
#define down(i, l, r) for(int i = l; i >= r; i--)
#define MS 1234
#define MAX 1037471823
using namespace std;
int n, pp, p[MS], a, k;
long long dp[MS][MS];
bool b[MS];
int main()
{
scanf("%d", &n);
rep(i, 2, n) if (!b[i])
{
p[++pp] = i; a = i+i;
while (a <= n) b[a] = 1, a += i;
}
rep(i, 0, n) dp[0][i] = 1;
rep(i, 1, pp) rep(j, 0, n)
{
dp[i][j] = dp[i-1][j];
k = p[i]; while (k <= j) dp[i][j] += dp[i-1][j-k], k *= p[i];
}
printf("%lld\n", dp[pp][n]);
}
I2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDxxdWV1ZT4KCiNkZWZpbmUgcmVwKGksIGwsIHIpIGZvcihpbnQgaSA9IGw7IGkgPD0gcjsgaSsrKQojZGVmaW5lIGRvd24oaSwgbCwgcikgZm9yKGludCBpID0gbDsgaSA+PSByOyBpLS0pCiNkZWZpbmUgTVMgMTIzNAojZGVmaW5lIE1BWCAxMDM3NDcxODIzCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG4sIHBwLCBwW01TXSwgYSwgazsKbG9uZyBsb25nIGRwW01TXVtNU107CmJvb2wgYltNU107CgppbnQgbWFpbigpCnsKCXNjYW5mKCIlZCIsICZuKTsKCXJlcChpLCAyLCBuKSBpZiAoIWJbaV0pIAoJewoJCXBbKytwcF0gPSBpOyBhID0gaStpOwoJCXdoaWxlIChhIDw9IG4pIGJbYV0gPSAxLCBhICs9IGk7Cgl9CglyZXAoaSwgMCwgbikgZHBbMF1baV0gPSAxOwoJcmVwKGksIDEsIHBwKSByZXAoaiwgMCwgbikKCXsKCQlkcFtpXVtqXSA9IGRwW2ktMV1bal07IAoJCWsgPSBwW2ldOyB3aGlsZSAoayA8PSBqKSBkcFtpXVtqXSArPSBkcFtpLTFdW2ota10sIGsgKj0gcFtpXTsKCX0KCXByaW50ZigiJWxsZFxuIiwgZHBbcHBdW25dKTsKfQ==