#include<stdio.h>
#include<stdlib.h>
int n, ans = 0;
int a[100005];
struct road
{
int d;
int num;
}p[100005];
int cmp(struct road* a, struct road* b)
{
return a->d - b->d;
}
int mins(int begin, int end)
{
struct road p1[100005];
for (int i = begin; i <= end; i++)
{
p1[i].d = p[i].d;
p1[i].num = p[i].num;
}
qsort(p1 + begin, end - begin + 1, sizeof(struct road), cmp);
return p1[begin].num;
}
void dg(int begin, int end)
{
if (begin > end)
{
return;
}
int mid = mins(begin, end);
ans += p[mid].d;
int k = p[mid].d;
for (int i = begin; i <= end; i++)
{
p[i].d -= k;
}
dg(mid + 1, end);
dg(begin, mid - 1);
}
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%d", &p[i].d);
p[i].num = i;
}
dg(1, n);
printf("%d", ans);
return 0;
}