#include #include #include #define NMAX 10005 using namespace std; struct elem { int x,p; }v[NMAX]; bool cmp(elem r,elem p) { if(r.x>p.x) return 1; return 0; } int n,i,j,Max; int lg,sum; int main() { cin>>n; for(i=1;i<=n;++i) { cin>>v[i].x; v[i].p=i; } sort(v+1,v+n+1,cmp); Max=(v[n].x+v[n-1].x)- floor((double)log2((double)abs(v[n].p-v[n-1].p))); for(i=n;i>=1;--i) { j=i-1; while(j > 0) { lg=floor((double)log2((double)abs(v[i].p-v[j].p))); sum = (v[i].x + v[j].x) -lg; if(sum + 30 < Max) break; if(sum > Max) Max=sum; --j; } } cout<