#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; vector v; set s; int main(){ v.push_back(3); v.push_back(5); v.push_back(17); v.push_back(257); v.push_back(65537); long long int way = 1LL; long long int a = 0; scanf("%lld", &a); while (way <= a){ for (int i = 0; i < (1 << v.size()); i++){ long long int num = 1LL; for (int j = 0; j < v.size(); j++){ if ((i >> j) & 1){ num *= v[j]; } } num *= way; if (num <= a){ s.insert(num); } } //end way *= 2LL; } long long int ans = s.size(); ans -= 2LL; ans = max(ans, 0LL); printf("%lld\n", ans); return 0; }