4
90 91 90 91
 4
54 54 54 55
 10
55 39 93 42 97 40 36 38 11 97
 3
90 39 98
 5
21 57 40 94 17
 8
46 4 30 85 52 6 84 13
 6
47 100 96 2 96 43
 4
61 28 3 81
 5
14 91 91 91 84
 3
22 23 24
 1
13
 9
13 80 13 38 98 85 11 73 74
 10
95 51 52 8 44 39 77 17 96 88
 3
40 40 40
 4
16 17 17 18
 3
68 67 67
 4
83 100 81 75
 9
71 71 70 70 71 70 69 70 71
 10
9 9 9 10 10 9 8 8 9 9
 6
87 86 86 86 85 86
 5
64 63 63 62 61
 3
76 9 12
 4
61 60 60 60
 7
23 37 39 8 72 31 85
 10
67 67 67 67 67 67 67 67 67 67
 4
92 18 29 93
 4
14 15 15 16
 10
79 84 22 38 23 22 33 42 13 96
 7
20 21 95 73 49 98 53
 10
28 61 23 73 61 33 45 55 18 43
 9
15 14 14 13 13 12 13 13 14
 5
46 46 47 46 45
 7
35 91 87 78 17 71 63
 3
69 26 73
 10
16 17 16 15 14 15 16 17 16 15
 9
95 7 97 61 90 7 30 65 39
 10
2 83 18 65 58 95 37 51 86 47
 6
59 59 60 60 59 58

YES YES NO NO NO NO NO NO NO YES YES NO NO YES YES YES NO YES YES YES YES NO YES NO YES NO YES NO NO NO YES YES NO NO YES NO NO YES
#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-9;
const double PI = acos(-1.);
const int MOD = 1e9 + 7;
const int MAX = 1e-9;
bool isPrime(int n) {
  if (n <= 1) return false;
  if (n <= 3) return true;
  if (n % 2 == 0 || n % 3 == 0) return false;
  for (int i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0) return false;
  return true;
}
void input(int *a, int size) {
  for (int i = 0; i < size; ++i) {
    cin >> a[i];
  }
}
void output(int *a, int size) {
  for (int i = 0; i < size; ++i) {
    cout << a[i] << " ";
  }
  cout << endl;
}
int main() {
  int n, Max = 0;
  cin >> n;
  stack<int> result;
  queue<int> A;
  int a;
  queue<int> B;
  cin >> a;
  for (int i = 0; i < n - 1; i++) {
    if (Max < a) Max = a;
    A.push(a);
    cin >> a;
    if (abs(a - A.back()) > 1) return cout << "NO", 0;
  }
m:
  int k = 1;
  while (!A.empty()) {
    if (A.front() == Max && k) {
      k = 0;
      result.push(A.front());
      A.pop();
      continue;
    }
    B.push(A.front());
    A.pop();
  }
  if (A.empty()) return cout << "YES", 0;
  Max = 0;
  a = B.front();
  B.pop();
  while (!B.empty()) {
    if (a > Max) Max = a;
    A.push(a);
    if (abs(a - B.front()) > 1) {
      return cout << "NO", 0;
    }
    a = B.front();
    B.pop();
  }
  A.push(a);
  goto m;
}
