#include <bits/stdc++.h>
using namespace std ;
int n , fac , sum , rest , ans = 10e8 , need ;
int a[ 100 ] ;
int vis[ 100 ] ;
int flag ;
bool cmp ( int x , int y ) {
return x > y ;
}
void dfs ( int q , int w , int r , int t ) {
if ( t == 0 && w == need ) {
ans = min ( ans , rest ) ;
flag = 1 ;
return ;
}
if ( flag == 1 ) return ;
if ( t == 0 && w != need ) {
flag = 1 ;
return ;
}
for ( int k = 0 ; k < fac ; k++ ) {
if ( a[ k ] == a[ k - 1 ] && vis[ k - 1 ] == 0 && vis[ k - 1 ] == 0 ) {
continue ;
}
else if ( vis[ k ] == 0 ){
if ( q + a[ k ] > r && vis[ k ] == 0 ) {
continue ;
}
else if ( q + a[ k ] == r && vis[ k ] == 0 ) {
vis[ k ] = 1 ;
t-- ;
dfs( 0 , w + 1 , rest , t ) ;
t++ ;
vis[ k ] = 0 ;
if ( q == 0 || q + a[ k ] == 0 ) return ;
}
else if ( q + a[ k ] < r && vis[ k ] == 0 ) {
vis[ k ] = 1 ;
t-- ;
dfs( q + a[ k ] , w , r - a[ k ] , t - 1 ) ;
t++ ;
vis[ k ] = 0 ;
if ( q == 0 || q + a[ k ] == 0 ) return ;
}
}
}
}
int main() {
cin >> n ;
for ( int i = 0 ; i < n ; i++ ) {
cin >> a[ i ] ;
if ( a[ i ] <= 50 ) {
sum += a[ i ] ;
fac++ ;
}
else a[ i ] = 0 ;
}
sort ( a , a + n , cmp ) ;
for ( int i = fac ; i <= 70 ; i++ ) {
a[ i ] = 0 ;
}
for ( int i = 1 ; i <= sum ; i++ )
{
if ( sum % i == 0 ) {
rest = sum / i ;
if ( a[ 0 ] > rest ) {
continue ;
}
else {
need = i ;
flag = 0 ;
dfs ( 0 , 0 , rest , fac ) ;
}
}
}
cout << ans ;
return 0 ;
}