#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long expo(long long base, long long pow) {
  long long ans = 1;
  while (pow != 0) {
    if (pow & 1 == 1) {
      ans = ans * base;
      ans = ans % mod;
    }
    base *= base;
    base %= mod;
    pow /= 2;
  }
  return ans;
}
long long inv(long long x) { return expo(x, mod - 2); }
long long mult_mod(long long a, long long b) {
  a = a % mod;
  b = b % mod;
  long long c = (a * b) % mod;
  return c;
}
long long add_mod(long long a, long long b) {
  a = (a + mod) % mod;
  b = (b + mod) % mod;
  long long c = (a + b) % mod;
  return c;
}
long long fac[(int)(5e5 + 5)], inv_fac[(int)(5e5 + 5)];
void precomp_factorial(int M) {
  fac[0] = 1;
  for (int i = 1; i <= M; i++) fac[i] = mult_mod(i, fac[i - 1]);
  inv_fac[M] = inv(fac[M]);
  for (int i = M - 1; i >= 0; i--) inv_fac[i] = mult_mod(i + 1, inv_fac[i + 1]);
}
long long nCk(long long n, long long k) {
  long long ans = fac[n];
  ans = mult_mod(ans, inv_fac[n - k]);
  ans = mult_mod(ans, inv_fac[k]);
  return ans;
}
int lo[(int)(1e3 + 6)];
void sieve(int M) {
  for (int i = 2; i < M; i++) {
    if (lo[i]) continue;
    for (int j = i; j < M; j += i) lo[j] = i;
  }
}
int max_expo_prime_n_fac(long long N, int prime) {
  int ress = 0;
  while (N) {
    ress += (N / prime);
    N /= prime;
  }
  return ress;
}
string get_prefix(string x, int MAX) {
  return x.substr(0, min((int)x.size(), MAX));
}
string get_suffix(string x, int MAX) {
  int dn = 1;
  for (int i = x.size() - 1; i >= 0; i--) {
    if (dn == MAX) return x.substr(i);
    dn++;
  }
  return x;
}
string convert_to_binary(int x, int len) {
  string ans = "";
  while (x) {
    if (x & 1) {
      ans = '1' + ans;
    } else {
      ans = '0' + ans;
    }
    x /= 2;
  }
  int k = ans.size();
  while (k < len) {
    ans = '0' + ans;
    k++;
  }
  return ans;
}
unsigned long long llrand() {
  unsigned long long r = 0;
  for (int i = 0; i < 5; ++i) {
    r = (r << 15) | (rand() & 0x7FFF);
  }
  return r & 0xFFFFFFFFFFFFFFFFULL;
}
int dx[8] = {1, 0, -1, 0, 1, -1, -1, 1};
int dy[8] = {0, 1, 0, -1, 1, 1, -1, -1};
const int SZ = 2345678;
int main() {
  int n;
  cin >> n;
  vector<long long> vec(n);
  for (int i = 0; i < n; i++) cin >> vec[i];
  vector<long long> vec1;
  vec1.push_back(vec[0]);
  for (unsigned long long i = 1; i < n; i++) {
    if (i < n - 1) {
      long long val1 = abs(vec[i + 1] - vec1.back());
      long long val2 = abs(vec[i] - vec1.back()) + abs(vec[i + 1] - vec[i]);
      if (val1 == val2) continue;
    }
    vec1.push_back(vec[i]);
  }
  unsigned long long cur = 1000LL;
  int ind = 0;
  if (vec1.size() > 1) {
    if (vec1[1] < vec1[0]) ind++;
  }
  for (int i = ind; i + 1 < vec1.size(); i += 2) {
    if (vec1[i + 1] <= vec[i]) continue;
    unsigned long long val1 = vec1[i];
    unsigned long long cnt = cur / vec1[i];
    cur = cur % vec1[i];
    cur += cnt * vec1[i + 1];
  }
  cout << cur << endl;
}
