#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;
  if(a[0]>a[1])
  {
      
  }
  else{
      mon=(1000-(1000/a[0])*a[0]);
      sto = 1000/a[0];
  }
  
  for(i=1;i<n;i++)
  {
    //   cout<<sto<<" "<<mon<<" "<<a[i]<<"\n";
       if(i+1<n&&a[i+1]>a[i])
       {
           continue;
       }
       else if(a[i]>a[i-1])
       {
           mon+=(sto*a[i]);
           sto=0;
       }
       else if(a[i]<a[i-1])
       {
           ll temp=mon;
           mon-=((temp/a[i])*a[i]);
           sto+=(temp/a[i]);
       }
       
  }
  cout<<max(res,mon)<<"\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;
}