#include <numeric>
#include <vector>
#include <cstdio>
#include <cstdlib>
using namespace std;

int correct(vector<int> cubes) {
  int N = cubes.size();
  int S = accumulate( cubes.begin(), cubes.end(), 0 ); // S = sum of cube sizes
  vector<int> best(S+1,-1234567);
  best[0] = 0;
  for (int i=0; i<N; ++i) {
    vector<int> next = best;
    for (int j=0; j<=S; ++j) if (best[j]>=0) {
      next[ j+cubes[i] ] = max( next[ j+cubes[i] ], best[j] + cubes[i] );
      next[ abs(j-cubes[i]) ] = max( next[ abs(j-cubes[i]) ], max( best[j], best[j]-j+cubes[i] ) );
    }
    best = next;
  }
  return best[0];
}

int main() {
  int N;
  scanf("%d",&N);
  vector<int> cubes(N);
  for (int n=0; n<N; ++n) scanf("%d",&cubes[n]);
  printf("%d\n",correct(cubes));
}
