#include <bits/stdc++.h>
using namespace std;
template <typename T>
void getMin(T &a, T b) {
  if (a > b) a = b;
}
template <typename T>
void getMax(T &a, T b) {
  if (a < b) a = b;
}
template <typename T>
vector<T> getVector(const int n) {
  return vector<T>(n);
}
template <typename T>
vector<T> getVector(const int n, const T a) {
  return vector<T>(n, a);
}
template <typename T>
vector<T> getEmptyVector() {
  return vector<T>();
}
template <typename T>
void appendAll(vector<T> &a, vector<T> b) {
  a.insert(a.end(), b.begin(), b.end());
}
const int dx[4] = {1, -1, 0, 0};
const int dy[4] = {0, 0, 1, -1};
const long long MOD = 1000000007;
const int MAXN = 1 << 17;
const int inf = 1 << 28;
const int NIL = -inf;
int popcount(int x) { return __builtin_popcount(x); }
vector<long long> dp;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int N;
  cin >> N;
  vector<long long> first(N);
  for (int i = (0); i <= ((int)N - 1); i++) cin >> first[i];
  const int mx = 100000001;
  dp.resize(mx, -1);
  dp[0] = 1000;
  int mk = 0;
  for (int i = (1); i <= ((int)N); i++) {
    long long a = first[i - 1];
    for (int j = 0;; j++) {
      if (j > 0 && dp[j - 1] >= a) {
        getMax(mk, j);
        getMax(dp[j], dp[j - 1] - a);
      } else if (j > mk)
        break;
    }
    for (int j = mk - 1; j >= 0; j--) {
      if (dp[j + 1] != -1) {
        getMax(dp[j], dp[j + 1] + a);
      }
    }
  }
  cout << dp[0] << endl;
  return 0;
}
