#include <bits/stdc++.h>
using namespace std;
template <class T>
void UniqeVector(vector<T>& v) {
  sort(v.begin(), v.end());
  v.erase(unique(v.begin(), v.end()), end(v));
}
template <class A>
void re(complex<A>& c);
template <class A, class B>
void re(pair<A, B>& p);
template <class A>
void re(vector<A>& v);
template <class A, size_t SZ>
void re(array<A, SZ>& a);
template <class T>
void re(T& x) {
  cin >> x;
}
void re(double& d) {
  string t;
  re(t);
  d = stod(t);
}
void re(long double& d) {
  string t;
  re(t);
  d = stold(t);
}
template <class H, class... T>
void re(H& h, T&... t) {
  re(h);
  re(t...);
}
template <class A>
void re(complex<A>& c) {
  A a, b;
  re(a, b);
  c = {a, b};
}
template <class A, class B>
void re(pair<A, B>& p) {
  re(p.f, p.s);
}
template <class A>
void re(vector<A>& x) {
  for (auto& a : x) re(a);
}
template <class A, size_t SZ>
void re(array<A, SZ>& x) {
  for (auto& a : x) re(a);
}
string to_string(char c) { return string(1, c); }
string to_string(const char* s) { return (string)s; }
string to_string(string s) { return s; }
string to_string(bool b) { return to_string((int)b); }
template <class A>
string to_string(complex<A> c) {
  stringstream ss;
  ss << c;
  return ss.str();
}
string to_string(vector<bool> v) {
  string res = "{";
  for (int i = (0); ((1) > 0 ? i < ((int)v.size()) : i > ((int)v.size()));
       i += (1))
    res += char('0' + v[i]);
  res += "}";
  return res;
}
template <size_t SZ>
string to_string(bitset<SZ> b) {
  string res = "";
  for (int i = (0); ((1) > 0 ? i < (SZ) : i > (SZ)); i += (1))
    res += char('0' + b[i]);
  return res;
}
template <class A, class B>
string to_string(pair<A, B> p);
template <class T>
string to_string(T v) {
  bool fst = 1;
  string res = "";
  for (const auto& x : v) {
    if (!fst) res += " ";
    fst = 0;
    res += to_string(x);
  }
  return res;
}
template <class A, class B>
string to_string(pair<A, B> p) {
  return to_string(p.f) + " " + to_string(p.s);
}
template <class A>
void pr(A x) {
  cout << to_string(x);
}
template <class H, class... T>
void pr(const H& h, const T&... t) {
  pr(h);
  pr(t...);
}
void ps() { pr("\n"); }
template <class H, class... T>
void ps(const H& h, const T&... t) {
  pr(h);
  if (sizeof...(t)) pr(" ");
  ps(t...);
}
void prsz(vector<int>& v) {
  pr((int)v.size(), '\n');
  pr(v);
}
const int di[8] = {0, 0, 1, -1, 1, 1, -1, -1};
const int dj[8] = {1, -1, 0, 0, 1, -1, 1, -1};
int n, a[80];
long long dp[80][50][10000];
long long calc(int idx, int s, int m) {
  if (idx == n) return m;
  long long& ret = dp[idx][s][m];
  if (~ret) return ret;
  int cur_m = m, cur_s = s;
  ret = calc(idx + 1, s, m);
  while (cur_s--) {
    cur_m += a[idx];
    ret = max(ret, calc(idx + 1, cur_s, cur_m));
  }
  cur_s = s, cur_m = m;
  while (cur_m >= a[idx]) {
    cur_s++;
    cur_m -= a[idx];
    ret = max(ret, calc(idx + 1, cur_s, cur_m));
  }
  return ret;
}
void Suhaib_Sawalha() {
  re(n);
  for (int i = (0); ((1) > 0 ? i < (n) : i > (n)); i += (1)) re(a[i]);
  memset(dp, -1, sizeof dp);
  pr(calc(0, 0, 1000));
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  Suhaib_Sawalha();
  return 0;
}
