//#pragma GCC optimize("O3, unroll-loops")
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 5;
int arr[MAXN];
vector<int> D(MAXN, 1);
void precompute_D() {
for (int i = 2; i < MAXN; ++i) {
for (int j = i; j < MAXN; j += i) {
D[j]++;
}
}
}
int32_t main() {
precompute_D();
int ans = 0;
for(int i = 1;i<MAXN;++i){
int x = i;
int steps = 0;
while(x>2){
++steps;
x = D[x];
}
ans = max(ans,steps);
}
cout<<ans<<endl;
return 0;
}
Ly8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiTzMsIHVucm9sbC1sb29wcyIpCgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNQVhOID0gMWU2ICsgNTsKCmludCBhcnJbTUFYTl07CnZlY3RvcjxpbnQ+IEQoTUFYTiwgMSk7Cgp2b2lkIHByZWNvbXB1dGVfRCgpIHsKICAgIGZvciAoaW50IGkgPSAyOyBpIDwgTUFYTjsgKytpKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IGk7IGogPCBNQVhOOyBqICs9IGkpIHsKICAgICAgICAgICAgRFtqXSsrOwogICAgICAgIH0KICAgIH0KfQoKaW50MzJfdCBtYWluKCkgewogICAgcHJlY29tcHV0ZV9EKCk7CiAgICAKICAgIGludCBhbnMgPSAwOwogICAgZm9yKGludCBpID0gMTtpPE1BWE47KytpKXsKICAgIAlpbnQgeCA9IGk7CiAgICAJaW50IHN0ZXBzID0gMDsKICAgIAl3aGlsZSh4PjIpewogICAgCQkrK3N0ZXBzOwogICAgCQl4ID0gRFt4XTsKICAgIAl9CiAgICAJYW5zID0gbWF4KGFucyxzdGVwcyk7CiAgICB9CiAgICBjb3V0PDxhbnM8PGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=