#include <bits/stdc++.h>
#include <unordered_map>
using namespace std;
unordered_map <unsigned long long, unsigned long long> nums;
unsigned long long f(unsigned long long n) {
if (n < 3) {
return 1;
}
else if (nums.count(n) > 0) {
return nums[n];
}
else if (n % 2 == 0) {
unsigned long long temp1 = f(n - 1) + f(n - 3);
nums[n] = temp1;
return temp1;
}
else {
unsigned long long temp2 = f(6 * n / 7) + f(2 * n / 3);
nums[n] = temp2;
return temp2;
}
}
int main() {
unsigned long long n;
cin >> n;
cout << f(n);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnVub3JkZXJlZF9tYXAgPHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nPiBudW1zOwoKdW5zaWduZWQgbG9uZyBsb25nIGYodW5zaWduZWQgbG9uZyBsb25nIG4pIHsKCWlmIChuIDwgMykgewoJCXJldHVybiAxOwoJfQoJZWxzZSBpZiAobnVtcy5jb3VudChuKSA+IDApIHsKCQlyZXR1cm4gbnVtc1tuXTsKCX0KCWVsc2UgaWYgKG4gJSAyID09IDApIHsKCQl1bnNpZ25lZCBsb25nIGxvbmcgdGVtcDEgPSBmKG4gLSAxKSArIGYobiAtIDMpOwoJCW51bXNbbl0gPSB0ZW1wMTsKCQlyZXR1cm4gdGVtcDE7Cgl9CgllbHNlIHsKCQl1bnNpZ25lZCBsb25nIGxvbmcgdGVtcDIgPSBmKDYgKiBuIC8gNykgICsgZigyICogbiAvIDMpOwoJCW51bXNbbl0gPSB0ZW1wMjsKCQlyZXR1cm4gdGVtcDI7Cgl9Cn0KCmludCBtYWluKCkgewoJdW5zaWduZWQgbG9uZyBsb25nIG47CgljaW4gPj4gbjsKCWNvdXQgPDwgZihuKTsKfQ==