

#include <bits/stdc++.h>

#define loop(i, a, b) for (int i = a; i < b; i++)
#define rep(i, a) loop(i, 0, a)

using namespace std;

template <class T>
using vec = std::vector<T>;
typedef long long ll;
template <class T>
inline bool chmin(T &a, T b)
{
    if (a > b)
    {
        a = b;
        return true;
    }
    return false;
}
template <class T>
inline bool chmax(T &a, T b)
{
    if (a < b)
    {
        a = b;
        return true;
    }
    return false;
}

const long long INF = 1LL << 60;

const double PI = acos(-1.0);

// long long積のオーバーフロー検出
bool detect_mul_overflow(ll a, ll b)
{
    return a >= LONG_MAX / b;
}

int lcm(int a, int b)
{
    //最小公倍数
    return a / __gcd(a, b) * b;
}

struct edge
{
    int from, to, cost;
};

// int型の2次元配列(3×4要素の)の宣言
// vector<vector<int>> data(3, vector<int>(4));

int chk_down(int n, int i, vec<int> a)
{
    if (i == n)
    {
        return n;
    }
    if (a[i] >= a[i + 1])
    { //翌日が今日以下
        return chk_down(n, i + 1, a);
    }
    else
    { // 翌日は上がる
        return i;
    }
}

int n;

int main()
{
    cin >> n;
    vec<int> a(n + 10, -1);
    rep(i, n)
    {
        cin >> a[i];
    }
    n--;
    int i = 0;
    int money = 1000;
    while (true)
    {
        i = chk_down(n, i, a);
        if (i == n)
        {
            break;
        }
        int div = money / a[i];
        money -= div * a[i];
        money += div * a[i + 1];
        i++;
    }
    cout << money << endl;
    return 0;
}
