using System;
using System.Collections.Generic;
using System.Linq;
using static System.Console;
using static System.Math;

namespace D_MSOL2020
{
    class MainClass
    {

        static int[] s, a;

        public static void Main(string[] args)
        {
            s = Array.ConvertAll(ReadLine().Split().ToArray(), int.Parse);
            a = Array.ConvertAll(ReadLine().Split().ToArray(), int.Parse);

            int n = s[0];
            int pm = 0;
            int ptmp = 0;
            int mtmp = 0;
            var diflist = new List<int[]>();
            var agarippa = 0;
            for (int i = 1; i < n; i++)
            {
                if (a[i] - a[i - 1] > 0)
                {
                    if (pm > 0)
                    {
                        pm = a[i] - a[i - 1];
                        ptmp += pm;
                        if (i == n - 1) diflist.Add(new int[3] { ptmp, i, agarippa });
                    }
                    else if (pm == 0)
                    {
                        pm = a[i] - a[i - 1];
                        ptmp += pm;
                        agarippa = i - 1;
                        if (i == n - 1) diflist.Add(new int[3] { ptmp, i, agarippa });
                    }
                    else // minus to plus
                    {
                        diflist.Add(new int[3] { mtmp, i, 0 });
                        mtmp = 0;
                        pm = a[i] - a[i - 1];
                        ptmp += pm;
                        agarippa = i - 1;
                        if (i == n - 1) diflist.Add(new int[3] { ptmp, i, agarippa });
                    }
                }
                else if (a[i] - a[i - 1] == 0)
                {
                    if (pm > 0)
                    {
                        pm = a[i] - a[i - 1];
                        diflist.Add(new int[3] { ptmp, i, agarippa });
                        ptmp = 0;
                    }
                    else if (pm == 0)
                    {

                    }
                    else
                    {
                        pm = a[i] - a[i - 1];
                        diflist.Add(new int[3] { mtmp, i, 0 });
                        mtmp = 0;
                    }
                }
                else
                {
                    if (pm < 0)
                    {

                        pm = a[i] - a[i - 1];
                        mtmp += pm;
                        if (i == n - 1) diflist.Add(new int[3] { mtmp, i, 0 });
                    }
                    else if (pm == 0)
                    {
                        pm = a[i] - a[i - 1];
                        mtmp += pm;
                        if (i == n - 1) diflist.Add(new int[3] { mtmp, i, 0 });
                    }
                    else // plus to minus
                    {
                        diflist.Add(new int[3] { ptmp, i, agarippa });
                        ptmp = 0;
                        pm = a[i] - a[i - 1];
                        mtmp += pm;
                        if (i == n - 1) diflist.Add(new int[3] { mtmp, i, 0 });
                    }
                }
            }
            var arigane = 1000;
            var stock = 0;
            // var ans = 0;
            foreach (var item in diflist)
            {
                var kabuka = a[item[1]];
                if (item[0] < 0)
                {
                    if (arigane > 0)
                    {
                        var stocknum = arigane / kabuka;
                        var stockval = kabuka * stocknum;
                        arigane -= stockval;
                        stock += stocknum;
                    }
                }
                else if (item[0] == 0)
                {
                    throw new System.ArgumentException("koreha okashii");
                }
                else
                {
                    var agarivalue = a[item[2]];
                    if (arigane > 0)
                    {
                        var stocknum = arigane / agarivalue;
                        var stockval = agarivalue * stocknum;
                        arigane -= stockval;
                        stock += stocknum;
                    }
                    if (stock > 0)
                    {
                        var stockval = kabuka * stock;
                        arigane += stockval;
                        stock = 0;
                    }
                }
            }
            WriteLine(arigane + (stock * a[n - 1]));

        }

        public static int LowerBound<T>(T[] a, T v)
        {
            return LowerBound(a, v, Comparer<T>.Default);
        }

        public static int LowerBound<T>(T[] a, T v, Comparer<T> cmp)
        {
            var l = 0;
            var r = a.Length - 1;
            while (l <= r)
            {
                var mid = l + (r - l) / 2;
                var res = cmp.Compare(a[mid], v);
                if (res == -1) l = mid + 1;
                else r = mid - 1;
            }
            return l;
        }
        public static int UpperBound<T>(T[] a, T v)
        {
            return UpperBound(a, v, Comparer<T>.Default);
        }

        public static int UpperBound<T>(T[] a, T v, Comparer<T> cmp)
        {
            var l = 0;
            var r = a.Length - 1;
            while (l <= r)
            {
                var mid = l + (r - l) / 2;
                var res = cmp.Compare(a[mid], v);
                if (res <= 0) l = mid + 1;
                else r = mid - 1;
            }
            return l;
        }
    }
}
