import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.next());
        long[] ary = new long[n];
        for (int i = 0; i < n; i++) {
            long a = Long.parseLong(sc.next());
            ary[i] = a;
        }
        boolean ans = true;
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ary[i - 1] = ary[i - 1] - 1;
            }
            if (ary[i - 1] > ary[i]) {
                break;
            }
        }
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ans = false;
                break;
            }
        }
        System.out.println(ans ? "Yes" : "No");
    }
} import java.util.Scanner; Scanner java.util public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.next());
        long[] ary = new long[n];
        for (int i = 0; i < n; i++) {
            long a = Long.parseLong(sc.next());
            ary[i] = a;
        }
        boolean ans = true;
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ary[i - 1] = ary[i - 1] - 1;
            }
            if (ary[i - 1] > ary[i]) {
                break;
            }
        }
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ans = false;
                break;
            }
        }
        System.out.println(ans ? "Yes" : "No");
    }
} Main public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.next());
        long[] ary = new long[n];
        for (int i = 0; i < n; i++) {
            long a = Long.parseLong(sc.next());
            ary[i] = a;
        }
        boolean ans = true;
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ary[i - 1] = ary[i - 1] - 1;
            }
            if (ary[i - 1] > ary[i]) {
                break;
            }
        }
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ans = false;
                break;
            }
        }
        System.out.println(ans ? "Yes" : "No");
    } main {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.next());
        long[] ary = new long[n];
        for (int i = 0; i < n; i++) {
            long a = Long.parseLong(sc.next());
            ary[i] = a;
        }
        boolean ans = true;
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ary[i - 1] = ary[i - 1] - 1;
            }
            if (ary[i - 1] > ary[i]) {
                break;
            }
        }
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ans = false;
                break;
            }
        }
        System.out.println(ans ? "Yes" : "No");
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = Integer.parseInt(sc.next()); n Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc long[] ary = new long[n]; ary new long[n] n for (int i = 0; i < n; i++) {
            long a = Long.parseLong(sc.next());
            ary[i] = a;
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            long a = Long.parseLong(sc.next());
            ary[i] = a;
        } {
            long a = Long.parseLong(sc.next());
            ary[i] = a;
        } long a = Long.parseLong(sc.next()); a Long.parseLong(sc.next()) Long.parseLong Long sc.next() sc.next sc ary[i] = a ary[i] ary i a boolean ans = true; ans true for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ary[i - 1] = ary[i - 1] - 1;
            }
            if (ary[i - 1] > ary[i]) {
                break;
            }
        } int i = n - 1; int i = n - 1; i n - 1 n 1 i > 0 i 0 i-- i-- i {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ary[i - 1] = ary[i - 1] - 1;
            }
            if (ary[i - 1] > ary[i]) {
                break;
            }
        } {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ary[i - 1] = ary[i - 1] - 1;
            }
            if (ary[i - 1] > ary[i]) {
                break;
            }
        } if (n == 1) {
                break;
            } n == 1 n 1 {
                break;
            } break; if (ary[i - 1] > ary[i]) {
                ary[i - 1] = ary[i - 1] - 1;
            } ary[i - 1] > ary[i] ary[i - 1] ary i - 1 i 1 ary[i] ary i {
                ary[i - 1] = ary[i - 1] - 1;
            } ary[i - 1] = ary[i - 1] - 1 ary[i - 1] ary i - 1 i 1 ary[i - 1] - 1 ary[i - 1] ary i - 1 i 1 1 if (ary[i - 1] > ary[i]) {
                break;
            } ary[i - 1] > ary[i] ary[i - 1] ary i - 1 i 1 ary[i] ary i {
                break;
            } break; for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ans = false;
                break;
            }
        } int i = n - 1; int i = n - 1; i n - 1 n 1 i > 0 i 0 i-- i-- i {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ans = false;
                break;
            }
        } {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ans = false;
                break;
            }
        } if (n == 1) {
                break;
            } n == 1 n 1 {
                break;
            } break; if (ary[i - 1] > ary[i]) {
                ans = false;
                break;
            } ary[i - 1] > ary[i] ary[i - 1] ary i - 1 i 1 ary[i] ary i {
                ans = false;
                break;
            } ans = false ans false break; System.out.println(ans ? "Yes" : "No") System.out.println System.out System System.out ans ? "Yes" : "No" ans "Yes" "No" String[] args args public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.next());
        long[] ary = new long[n];
        for (int i = 0; i < n; i++) {
            long a = Long.parseLong(sc.next());
            ary[i] = a;
        }
        boolean ans = true;
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ary[i - 1] = ary[i - 1] - 1;
            }
            if (ary[i - 1] > ary[i]) {
                break;
            }
        }
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ans = false;
                break;
            }
        }
        System.out.println(ans ? "Yes" : "No");
    }
} public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.next());
        long[] ary = new long[n];
        for (int i = 0; i < n; i++) {
            long a = Long.parseLong(sc.next());
            ary[i] = a;
        }
        boolean ans = true;
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ary[i - 1] = ary[i - 1] - 1;
            }
            if (ary[i - 1] > ary[i]) {
                break;
            }
        }
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ans = false;
                break;
            }
        }
        System.out.println(ans ? "Yes" : "No");
    }
} Main
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.next());
        long[] ary = new long[n];
        for (int i = 0; i < n; i++) {
            long a = Long.parseLong(sc.next());
            ary[i] = a;
        }
        boolean ans = true;
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ary[i - 1] = ary[i - 1] - 1;
            }
            if (ary[i - 1] > ary[i]) {
                break;
            }
        }
        for (int i = n - 1; i > 0; i--) {
            if (n == 1) {
                break;
            }
            if (ary[i - 1] > ary[i]) {
                ans = false;
                break;
            }
        }
        System.out.println(ans ? "Yes" : "No");
    }
}