#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=55;
inline int read()
{
int a=0,f=1;
char c=getchar();
while(!isdigit(c))
{
if(c=='-') f=-1;
c=getchar();
}
while(isdigit(c))
{
a=(a<<1)+(a<<3)+(c^'0');
c=getchar();
}
return a*f;
}
void reflect(ll map[][maxn],int num,ll tmp)
{
for(int i=0;i<num;i++)
{
if(map[0][i]==0) map[0][i]=tmp;
}
}
void haffman(ll map[][maxn],int num)
{
for(int i=0;i<num;i+=2)
{
map[1][i/2]=(map[0][i]+map[0][i+1]);
}
}
int main()
{
int len;
while(cin>>len)
{
int a[maxn]={},maxdeep=0;
ll tmp=1;
ll map[2][maxn];
for(int i=1;i<=len;i++)
{
int x=read();
maxdeep=max(x,maxdeep);
a[x]++;
}
for(int i=0;i<a[maxdeep];i++)
{
map[0][i]=tmp;
}
sort(map[0],map[0]+a[maxdeep]);
tmp=map[0][a[maxdeep]-1];
haffman(map,a[maxdeep]);
int relength=a[maxdeep];
for(int i=maxdeep-1;i>0;i--)
{
memcpy(map[0],map[1],a[i+1]*sizeof(int));
int length;
if(relength/2>=2 && relength/2>=a[i]) length=relength/2;
else if(relength/2<=2 && relength/2>=a[i]) length=relength/2+1;
else length=a[i];
reflect(map,length,tmp);
sort(map[0],map[0]+length);
tmp=map[0][length-1];
haffman(map,length);
}
cout<<map[1][0]<<endl;
}
}