#include using namespace std; using ll = long long; using ld = long double; using pii = pair; using pll = pair; using vi = vector; #define pb push_back #define eb emplace_back #define fi first #define se second #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() #define rep(i,a,b) for (int i = (a); i < (b); ++i) mt19937 rng(random_device {}()); struct Sieve { vi primes, spf; Sieve(int n) : spf(n) { rep(i, 2, n) { if (!spf[i]) { spf[i] = i; primes.push_back(i); } for (int j : primes) { if (j * i >= n) break; spf[i * j] = j; if (j == spf[i]) break; } } } }; int main() { cin.tie(0)->sync_with_stdio(0); ll n; cin >> n; Sieve s(100); ll p = 1; int ans = 0; for(auto v : s.primes){ if(p <= n/v){ p *= v; ans++; }else break; } cout << ans << endl; return 0; }