#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+10;
typedef long long ll;
ll lb(ll x){
return x&(-x);
}
int cnt;
struct ac{
ll v,lb,id;
}a[maxn];
bool all(){
for(int i=2;i<=cnt;++i){
if(a[i].lb!=a[i-1].lb) return false;
}
return true;
}
map<int,bool> mmp;
int main(){
int n;
cin>>n;
int v,cnt0=0;
cnt=0;
for(int i=1;i<=n;++i){
cin>>v;
if(v==0) {
cnt0++;
continue;
}
if(mmp[v]==0){
a[++cnt].v=v;
a[cnt].lb=lb(a[cnt].v);
mmp[v]=1;
}
}
if((cnt0==0&&cnt==1)||(cnt0==n)){ //全部一样(或全为0)
cout<<0<<"\n";
return 0;
}
if(cnt==1&&cnt0!=1){//除0外全部一样,但有0
int f;
for(int i=1;i<=cnt;++i){
if(a[i].v!=0){
f=a[i].lb;
break;
}
}
long long t=1;
for(int i=1;i<=f-1;++i){
t*=2;
}
cout<<t<<"\n";
return 0;
}
ll s=0;
if(all()&&cnt0!=0){//lb全一样且有0
int f;
for(int i=1;i<=cnt;++i){
if(a[i].v!=0){
f=a[i].lb;
break;
}
}
cout<<cnt*f<<"\n";
return 0;
}
while(all()&&cnt0==0){
s++;
for(int i=1;i<=cnt;++i){
a[i].v/=2;
a[i].lb=lb(a[i].v);
}
}
ll Min=20000000000;
for(int i=1;i<=cnt;++i){
Min=min(Min,a[i].lb);
}
for(int i=1;i<=s;++i){
Min*=2;
}
cout<<Min*(cnt+(cnt0==0?0:1)-1)<<"\n";
return 0;
}