"use strict"

function main(input){
  const args=input.split("\n");
  const N=parseInt(args[0],10);

  //花の高さh1, h2, …を入れた配列
  const heights=input.split('\n')[1].split(' ').map((n) => parseInt(n, 10));
  const Max=Math.max.apply(null, heights);

  var checkFunc = function ( value, index, sourceArray ) {
    if(value==0){
      return true
    }else{
      return false
    }
  }

  if(heights.every(checkFunc)==true){
    console.log(0);
  }else{
    //特定の高さにおけるチャンク数を計算して配列に入れる
  var changArr=[];
  for(var i=1; i<=Max; i++){
    //高さiにおける花の数
    var hananoKazu=heights.filter(function(a){return(a>=i)}).length;
    //高さi以上の花それぞれ、「その1つ後にも高さi以上の花が存在する」場合にマイナス処理
    for(var j=0; j<N; j++){
      if(heights[j]>=i && heights[j+1]>=i){
        hananoKazu--
      }
    }
    //それをしてできた値が「高さiにおけるチャンクの数」である。
    changArr.push(hananoKazu);
  }
  //console.log(changArr);
  
  var setsuyakuKaisuu=[];
  for(var i=1; i<=Max; i++){
    var hananoKazu=heights.filter(function(a){return(a>=i)}).length;
    setsuyakuKaisuu.push(hananoKazu-changArr[i-1])
  }
  //console.log(setsuyakuKaisuu);

  const totalHeight=heights.reduce(function(total, data){return total + data});
  const setsuyakuSum=setsuyakuKaisuu.reduce(function(p, c) {return p + c;}); 
  console.log(totalHeight-setsuyakuSum);
  }
}

main(require('fs').readFileSync('/dev/stdin', 'utf8'))