using namespace std;
vector<long long> h;
int solve(int l, int r) {
if (l == r) {
if (h[l] == 0) return 0;
return 1;
}
if(l > r) return 0;
long long mn = 1e9 + 1;
for (int i = l; i <= r; i++) mn = min(mn, h[i]);
for (int i = l; i <= r; i++) h[i] -= mn;
int ret(1);
vector<int> interval;
for (int i = l; i <= r; i++) if (h[i] == 0) interval.push_back(i);
interval.push_back(l - 1); // [l,r]
interval.push_back(r + 1);
sort(interval.begin(), interval.end());
for (int i = 1; i < interval.size(); i++) {
ret += solve(interval[i - 1] + 1, interval[i] - 1); // 包含[l,r]
}
return ret;
}
int main() {
int n;
cin >> n;
h.resize(n+1);
for (int i = 1; i <= n; i++) cin >> h[i];
cout << solve(1, n) << endl;
return 0;
}