#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
#define mp make_pair
#define pb(x) push_back(x)
#define vi vector<int>
#define vs vector<string>
#define vll vector<long long>
#define vc vector<char>
#define vs vector<string>
#define pii pair<int, int>
#define pll pair<long long, long long>
#define pil pair<int, long long>
#define pli pair<long long, int>
#define pcc pair<char, char>
#define pdd pair<double, double>
#define mll map<long long, long long>
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()
#define flsh fflush(stdout)
#define gcd __gcd
#define clr(x) memset(x, 0, sizeof(x))
#define mod 1000000007LL
#define mod2 998244353LL
#define INF 1000000000007
 

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update> o_tree;


void solve()
{
  ll n;
  cin>>n;
  ll i,j;
  ll a[n];
  for(i=0;i<n;i++)
  {
      cin>>a[i];
  }

  ll res=1000;
  ll mon=1000;
  ll sto=0;
  ll mini=1000;
  ll maxi=-1;

  ll temp=a[0];
  i=0;
  
  
  ll tempmon1=0;
  ll tempsto1=0;
  mon=1000;
  sto=0;
//   tempmon1 = (1000-(1000/a[0])*a[0]);
//   tempsto1 = (1000/a[i]);

  for(i=0;i<n;i++)
  {
      res=max(res,mon);
      res=max(res,tempmon1);
      ll tem1 = tempmon1;
      ll mon1 = mon;
      ll tem2 = tempsto1;

      ll no = (mon/a[i])*a[i];
      ll no2 = mon - no;
      tempmon1=no2;
      tempsto1 = mon/a[i];
      ll noo1 = tem1+(tem2)*a[i];
      mon=max(mon,noo1);
  } 
  res=max(res,mon);
  res=max(res,tempmon1);
  cout<<res<<"\n";

  






}


int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);


if (fopen("input.txt","r" ))
  {
     freopen("input.txt", "r", stdin);
     freopen("output.txt", "w", stdout);
  }
cout<<setprecision(20);


ll t=1;


// cin>>t;


while(t--)
{
solve();
} 


return 0;
}