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
import java.util.*;
import java.io.*;
public class codeforces{
    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;
        public InputReader() {
            reader = new BufferedReader(new InputStreamReader(System.in));
            tokenizer = null;
        }
 
        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }
 
        public int nextInt() {
            return Integer.parseInt(next());
        }
 
        public long nextLong() {
            return Long.parseLong(next());
        }
 
        public double nextDouble() {
            return Double.parseDouble(next());
        }
 
        public String nextLine() {
            String s = null;
            try {
                s = reader.readLine();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            return s;
        }
 
        public String nextParagraph() {
            String line = null;
            String ans = "";
            try {
                while ((line = reader.readLine()) != null) {
                    ans += line;
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            return ans;
        }
    }
    //static int mod = 1000000007;
    static void printArray(int ar[]){ for(int x:ar) System.out.print(x+" ");}
    static void printArray(ArrayList<Integer> ar){ for(int x:ar) System.out.print(x+" ");}
    static int gcd(int a, int b){ if (a == 0) return b; return gcd(b%a, a);}
    static class Data{
        int pos;
        String val;
        public Data(int p,String s){
            this.pos = p;
            this.val = s;
        }
    }
    static int mod = 1000000000;
    static int m=0;
    static boolean F(int s,int v){
        m=s;
        while(m>0 && (int)Math.floor(s/m)!=v){
            m--;
        }
        if(m==0){
            return false;
        }
        return true;
    }
    public static void main(String args[]){
        InputReader sc = new InputReader();
        PrintWriter pw = new PrintWriter(System.out);
        int n=sc.nextInt();
        ArrayList<Integer> list = new ArrayList<Integer>();
        ArrayList<Integer> actual = new ArrayList<Integer>();
        int i=0;
        for(i=0;i<n;i++)
        {
            int p = sc.nextInt();
            list.add(p);
            actual.add(p);
        }
        Collections.sort(actual);
        int k = list.size()-1;
        while(list.size()>0)
        {
            int indx = -1,max = Integer.MIN_VALUE;
            for(i=0;i<list.size();i++)
            {
                if(list.size()>1){
                    if(i==0 && list.get(i)>list.get(i+1) && Math.abs(list.get(i)-list.get(i+1))==2)
                    {
                        list.set(i+1,list.get(i+1)+1);
                        list.set(i,list.get(i)-1);
                    }
                    else if(i>0 && Math.abs(list.get(i-1)-list.get(i))>=2 && list.get(i)>list.get(i-1))
                    {
                        list.set(i-1,list.get(i-1)+1);
                        list.set(i,list.get(i)-1);
                    }
                }   
            }
            for(i=0;i<list.size();i++)
            {
                if(max<list.get(i))
                {
                    max = list.get(i);
                    indx=i;
                }
            }
            if(max!=actual.get(k))
            {
                pw.println("NO");
                pw.close();
                return;
            }
            k--;
            list.remove(indx);
        }
        pw.println("YES");
        pw.close();
    }
}   