#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
using namespace std;
struct st{
int a;
int i;
int beaten[90];
}ele[90];
struct st tournament(int st,int end,struct st s[])
{
if(st==end)
return s[st];
else if(st<end)
{
int mid=(st+end)/2;
struct st left=tournament(st,mid,s);
struct st right=tournament(mid+1,end,s);
if(left.a>right.a)
{left.beaten[left.i++]=right.a;return left;}
else
{right.beaten[right.i++]=left.a;return right;}
}
}
int tour(struct st ele[])
{
struct st winner=tournament(0,7,ele);
int max=winner.beaten[0];
for(int j=1;j<winner.i;j++)
{if(winner.beaten[j]>max) max=winner.beaten[j];}
return max;
}
int main()
{
int i,s[]={3,7,1,4,2,8,5,6};
int n=(sizeof s)/(sizeof s[0]);
for(i=0;i<n;i++)
ele[i].a=s[i];
cout<<tour(ele);
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8Y3N0cmluZz4KI2luY2x1ZGU8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHN0ewppbnQgYTsKaW50IGk7CmludCBiZWF0ZW5bOTBdOwp9ZWxlWzkwXTsKCnN0cnVjdCBzdCB0b3VybmFtZW50KGludCBzdCxpbnQgZW5kLHN0cnVjdCBzdCBzW10pCnsKaWYoc3Q9PWVuZCkKcmV0dXJuIHNbc3RdOwoKZWxzZSBpZihzdDxlbmQpCnsKaW50IG1pZD0oc3QrZW5kKS8yOwpzdHJ1Y3Qgc3QgbGVmdD10b3VybmFtZW50KHN0LG1pZCxzKTsKc3RydWN0IHN0IHJpZ2h0PXRvdXJuYW1lbnQobWlkKzEsZW5kLHMpOwppZihsZWZ0LmE+cmlnaHQuYSkKe2xlZnQuYmVhdGVuW2xlZnQuaSsrXT1yaWdodC5hO3JldHVybiBsZWZ0O30KZWxzZQp7cmlnaHQuYmVhdGVuW3JpZ2h0LmkrK109bGVmdC5hO3JldHVybiByaWdodDt9Cn0KfQoKaW50IHRvdXIoc3RydWN0IHN0IGVsZVtdKQp7CnN0cnVjdCBzdCB3aW5uZXI9dG91cm5hbWVudCgwLDcsZWxlKTsKaW50IG1heD13aW5uZXIuYmVhdGVuWzBdOwpmb3IoaW50IGo9MTtqPHdpbm5lci5pO2orKykKe2lmKHdpbm5lci5iZWF0ZW5bal0+bWF4KSBtYXg9d2lubmVyLmJlYXRlbltqXTt9CnJldHVybiBtYXg7Cn0KCmludCBtYWluKCkKewppbnQgaSxzW109ezMsNywxLDQsMiw4LDUsNn07CmludCBuPShzaXplb2YgcykvKHNpemVvZiBzWzBdKTsKZm9yKGk9MDtpPG47aSsrKQplbGVbaV0uYT1zW2ldOwpjb3V0PDx0b3VyKGVsZSk7CnJldHVybiAwOwp9