"use strict";
function I(t, i) {
  (this._s = t.split("\n")), (this._c = 0), (this._l = 0), (this._f = i || Number);
}
(I.prototype.a = function(t) {
  var i = this._s[this._l];
  if (i) {
    var s = i.trim().split(" "),
      h = s[this._c];
    return this._c++, s.length === this._c && ((this._c = 0), this._l++), t ? t(h) : this._f(h);
  }
}),
  (I.prototype.l = function(t) {
    var i = this._s[this._l];
    if (i) return (this._c = 0), this._l++, i.split(" ").map(t || this._f);
  }),
  (module.exports = I);

function main(input) {
  var o = new I(input);

  const N = o.a();
  const H = o.l();

  let currentMinHeight = 0;
  let isPossible = true;
  for (let i = 0; i < H.length; i++) {
    if (H[i] > currentMinHeight) {
      // try to decrease Hi as much as possible
      currentMinHeight = H[i] - 1;
    } else if (H[i] === currentMinHeight) {
      currentMinHeight = H[i];
    } else {
      isPossible = false;
      break;
    }
  }

  console.log(isPossible ? "Yes" : "No");
}

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