//ojou kawayo no.1
#include <bits/stdc++.h>
using namespace std;
#define tsk "fct052_262144"
#define pb push_back
#define pf push_front
#define fi first
#define se second
#define Ningen_sama signed
#define tachi main()
#define __builtin_popcount __builtin_popcountll
#define el cout<<'\n'
#define all(a) a.begin(),a.end()
#define invAll(a) a.rbegin(),a.rend()
#define sz(a) ((int)a.size())
#define BIT(x, k) (1ll&((x) >> (k)))
#define mem(a,x) memset(a,x,sizeof(a))
#define debug(x) cout << #x << " = " << x << '\n'
#define execute cerr << "Time elapsed: " << (1.0 * clock() / CLOCKS_PER_SEC) << "s"
#define FOR(i, l, r) for(int i = (l); i <= (r); ++i)
#define FORD(i, l, r) for(int i = (l); i >= (r); --i)
#define REP(i, n) for(int i = 0; i < (n); ++i)
//#define int long long
template<class T> bool maximize(T& u, T v){if(u >= v) return false;return u = v, true;}
template<class T> bool minimize(T& u, T v){if(u <= v) return false;return u = v, true;}
using pii = pair<int, int>;
using ll = long long;
using vi = vector<int>;
using vpii = vector<pair<int, int>>;
#define inf32 0x3f3f3f3f
#define inf64 0x3f3f3f3f3f3f3f3f
const int maxn = 262144 + 5;
const int N = 5e3 + 5;
const int base = 31;
const ll mod = 1e9 + 7;
const ll need = 67108863;
const int vc = 2e9 + 1;
const ll INF18 = 4557430888798830399;
const ll LOG = 20;
const double eps = 1e-9;
const int BLOCK = 447;
const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, -1, 0, 1};
mt19937_64 rd(chrono::steady_clock::now().time_since_epoch().count());
#define rand rd
inline long long Rand(long long L, long long R) {
if(L>R) return 0;
return L + rd() % (R - L + 1);
}
inline ll add(ll x, ll y){x+=y;if(x>=mod) x-=mod;if(x<0) x+=mod;return x;}
inline ll mult(ll x, ll y){return 1LL * x * y % mod;}
int n;
int a[maxn];
int dp[60][maxn];
inline void init(){
}
inline void input(){
cin >> n;
FOR(i, 1, n) cin >> a[i];
}
inline void solve(){
mem(dp, -1);
FOR(i, 1, n) dp[a[i]][i] = i + 1;
int ans = *max_element(a + 1, a + 1 + n);
FOR(v, 2, 59){
FOR(i, 1, n){
if(dp[v][i] == -1 && dp[v - 1][i] != -1 && dp[v - 1][dp[v - 1][i]] != -1) dp[v][i] = dp[v - 1][dp[v - 1][i]];
if(dp[v][i] != -1) ans = max(ans, v);
}
}
cout << ans;
}
Ningen_sama tachi{
//konnakiri~~
if(fopen(tsk".inp","r")){
freopen(tsk".inp","r",stdin);
freopen(tsk".out","w",stdout);
}
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int Yodayo = 1;
//cin >> Yodayo;
//init();
while(Yodayo--){
input();
solve();
}
//execute;
}
//otsunakiri~~
Ly9vam91IGthd2F5byBuby4xCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIHRzayAiZmN0MDUyXzI2MjE0NCIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwZiBwdXNoX2Zyb250CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBOaW5nZW5fc2FtYSBzaWduZWQKI2RlZmluZSB0YWNoaSBtYWluKCkKI2RlZmluZSBfX2J1aWx0aW5fcG9wY291bnQgX19idWlsdGluX3BvcGNvdW50bGwKI2RlZmluZSBlbCBjb3V0PDwnXG4nCiNkZWZpbmUgYWxsKGEpIGEuYmVnaW4oKSxhLmVuZCgpCiNkZWZpbmUgaW52QWxsKGEpIGEucmJlZ2luKCksYS5yZW5kKCkKI2RlZmluZSBzeihhKSAoKGludClhLnNpemUoKSkKI2RlZmluZSBCSVQoeCwgaykgKDFsbCYoKHgpID4+IChrKSkpCiNkZWZpbmUgbWVtKGEseCkgbWVtc2V0KGEseCxzaXplb2YoYSkpCiNkZWZpbmUgZGVidWcoeCkgY291dCA8PCAjeCA8PCAiID0gIiA8PCB4IDw8ICdcbicKI2RlZmluZSBleGVjdXRlIGNlcnIgPDwgIlRpbWUgZWxhcHNlZDogIiA8PCAoMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDKSA8PCAicyIKI2RlZmluZSBGT1IoaSwgbCwgcikgZm9yKGludCBpID0gKGwpOyBpIDw9IChyKTsgKytpKQojZGVmaW5lIEZPUkQoaSwgbCwgcikgZm9yKGludCBpID0gKGwpOyBpID49IChyKTsgLS1pKQojZGVmaW5lIFJFUChpLCBuKSBmb3IoaW50IGkgPSAwOyBpIDwgKG4pOyArK2kpCi8vI2RlZmluZSBpbnQgbG9uZyBsb25nCgp0ZW1wbGF0ZTxjbGFzcyBUPiBib29sIG1heGltaXplKFQmIHUsIFQgdil7aWYodSA+PSB2KSByZXR1cm4gZmFsc2U7cmV0dXJuIHUgPSB2LCB0cnVlO30KdGVtcGxhdGU8Y2xhc3MgVD4gYm9vbCBtaW5pbWl6ZShUJiB1LCBUIHYpe2lmKHUgPD0gdikgcmV0dXJuIGZhbHNlO3JldHVybiB1ID0gdiwgdHJ1ZTt9Cgp1c2luZyBwaWkgPSBwYWlyPGludCwgaW50PjsKdXNpbmcgbGwgPSBsb25nIGxvbmc7CnVzaW5nIHZpID0gdmVjdG9yPGludD47CnVzaW5nIHZwaWkgPSB2ZWN0b3I8cGFpcjxpbnQsIGludD4+OwoKI2RlZmluZSBpbmYzMiAweDNmM2YzZjNmCiNkZWZpbmUgaW5mNjQgMHgzZjNmM2YzZjNmM2YzZjNmCmNvbnN0IGludCBtYXhuID0gMjYyMTQ0ICsgNTsKY29uc3QgaW50IE4gPSA1ZTMgKyA1Owpjb25zdCBpbnQgYmFzZSA9IDMxOwpjb25zdCBsbCBtb2QgPSAxZTkgKyA3Owpjb25zdCBsbCBuZWVkID0gNjcxMDg4NjM7CmNvbnN0IGludCB2YyA9IDJlOSArIDE7CmNvbnN0IGxsIElORjE4ID0gNDU1NzQzMDg4ODc5ODgzMDM5OTsKY29uc3QgbGwgTE9HID0gMjA7CmNvbnN0IGRvdWJsZSBlcHMgPSAxZS05Owpjb25zdCBpbnQgQkxPQ0sgPSA0NDc7CmNvbnN0IGludCBkeFs0XSA9IHsxLCAwLCAtMSwgMH07CmNvbnN0IGludCBkeVs0XSA9IHswLCAtMSwgMCwgMX07CgptdDE5OTM3XzY0IHJkKGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CiNkZWZpbmUgcmFuZCByZAppbmxpbmUgbG9uZyBsb25nIFJhbmQobG9uZyBsb25nIEwsIGxvbmcgbG9uZyBSKSB7CiAgICBpZihMPlIpIHJldHVybiAwOwogICAgcmV0dXJuIEwgKyByZCgpICUgKFIgLSBMICsgMSk7Cn0KCmlubGluZSBsbCBhZGQobGwgeCwgbGwgeSl7eCs9eTtpZih4Pj1tb2QpIHgtPW1vZDtpZih4PDApIHgrPW1vZDtyZXR1cm4geDt9CmlubGluZSBsbCBtdWx0KGxsIHgsIGxsIHkpe3JldHVybiAxTEwgKiB4ICogeSAlIG1vZDt9CgppbnQgbjsKaW50IGFbbWF4bl07CmludCBkcFs2MF1bbWF4bl07CgppbmxpbmUgdm9pZCBpbml0KCl7Cgp9CgppbmxpbmUgdm9pZCBpbnB1dCgpewogICAgY2luID4+IG47CiAgICBGT1IoaSwgMSwgbikgY2luID4+IGFbaV07Cn0KCmlubGluZSB2b2lkIHNvbHZlKCl7CiAgICBtZW0oZHAsIC0xKTsKICAgIEZPUihpLCAxLCBuKSBkcFthW2ldXVtpXSA9IGkgKyAxOwogICAgaW50IGFucyA9ICptYXhfZWxlbWVudChhICsgMSwgYSArIDEgKyBuKTsKICAgIEZPUih2LCAyLCA1OSl7CiAgICAgICAgRk9SKGksIDEsIG4pewogICAgICAgICAgICBpZihkcFt2XVtpXSA9PSAtMSAmJiBkcFt2IC0gMV1baV0gIT0gLTEgJiYgZHBbdiAtIDFdW2RwW3YgLSAxXVtpXV0gIT0gLTEpIGRwW3ZdW2ldID0gZHBbdiAtIDFdW2RwW3YgLSAxXVtpXV07CiAgICAgICAgICAgIGlmKGRwW3ZdW2ldICE9IC0xKSBhbnMgPSBtYXgoYW5zLCB2KTsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCBhbnM7Cn0KCk5pbmdlbl9zYW1hIHRhY2hpewogICAgLy9rb25uYWtpcml+fgogICAgaWYoZm9wZW4odHNrIi5pbnAiLCJyIikpewogICAgICAgIGZyZW9wZW4odHNrIi5pbnAiLCJyIixzdGRpbik7CiAgICAgICAgZnJlb3Blbih0c2siLm91dCIsInciLHN0ZG91dCk7CiAgICB9CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKICAgIGludCBZb2RheW8gPSAxOwoKICAgIC8vY2luID4+IFlvZGF5bzsKICAgIC8vaW5pdCgpOwoKICAgIHdoaWxlKFlvZGF5by0tKXsKICAgICAgICBpbnB1dCgpOwogICAgICAgIHNvbHZlKCk7CiAgICB9CgogICAgLy9leGVjdXRlOwp9Ci8vb3RzdW5ha2lyaX5+Cg==