#include <bits/stdc++.h>
using namespace std;
int num[5005];
int rmq(int l, int r) {
  int ans = 1 << 30, tmp = l;
  for (int i = l; i <= r; i++) {
    if (ans > num[i]) {
      ans = num[i];
      tmp = i;
    }
  }
  return tmp;
}
int get(int l, int r, int h) {
  if (l > r) return 0;
  if (l == r) {
    if (num[l] == h)
      return 0;
    else
      return 1;
  }
  int tmp = rmq(l, r);
  int ans = 0;
  ans = min(r - l + 1, get(l, tmp - 1, num[tmp]) + get(tmp + 1, r, num[tmp]) +
                           num[tmp] - h);
  return ans;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &num[i]);
  int ans = get(0, n - 1, 0);
  printf("%d\n", ans);
}
