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;
bool isValid(vector<long long> v, long long size) {
  for (long long i = 0; i < size - 1; ++i)
    if (abs(v[i] - v[i + 1]) >= 2) return false;
  return true;
}
int main() {
  long long n;
  cin >> n;
  vector<long long> v;
  v.resize(n);
  for (long long i = 0; i < n; ++i) {
    cin >> v[i];
  }
  long long j = n;
  bool ok = true;
  while (j > 0 && ok) {
    ok = ok && isValid(v, j);
    long long maxIdx = 0;
    for (long long i = 0; i < j; ++i) {
      if (v[maxIdx] < v[i]) maxIdx = i;
    }
    long long buf = v[maxIdx];
    for (long long i = maxIdx; i < n - 1; ++i) v[i] = v[i + 1];
    v[n - 1] = buf;
    --j;
  }
  cout << (ok ? "YES" : "NO") << endl;
  return 0;
}
