#include <bits/stdc++.h>

using namespace std;

int N;
int T[55];
int sumT;
bool dp[2505][2505];

int main() {
  cin >> N;
  for(int i = 0; i < N; i++) {
    cin >> T[i];
    sumT += T[i];
  }
  memset(dp, false, sizeof(dp));
  dp[0][0] = true;
  for(int i = 0; i < N; i++) {
    for(int j = sumT; j >= T[i]; j--) {
      for(int k = sumT; k >= 0; k--) {
	if(dp[j-T[i]][k]) dp[j][k] = true;
	if(dp[k][j-T[i]]) dp[k][j] = true;
      }
    }
  }
  int ans = sumT;
  for(int i = 0; i <= sumT; i++) {
    for(int j = 0; j <= sumT-i; j++) {
      if(dp[i][j]) ans = min(ans, max({i, j, sumT-i-j}));
    }
  }
  cout << ans << endl;
  return 0;
}