

import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {

		try {
			Scanner scanner = new Scanner(System.in);

			int n = scanner.nextInt();

			int [] h = new int [n];
			for(int i=0; i<n; i++) {
				h[i] = scanner.nextInt();
			}

			Main testC = new Main();
			System.out.println(testC.buildStairs(n, h));

			scanner.close();

		} catch (InputMismatchException e) {
			// TODO: handle exception
			System.out.println("整数を入力してください");
		}
	}


	public String buildStairs(int n, int[] h) {
//		for(int i=1; i<n; i++){
//			if(h[i-1] > h[i]) {
//				if(h[i-1] - 1 > h[i]) {
//					return "No";
//				} else if (i != 1 && h[i-2] > h[i-1] - 1){ //1つ目はi-2が-1でエラーになるので弾く
//					return "No";
//				} else {
//					h[i-1] = h[i-1] - 1;
//				}
//			}
//		}

		for(int i=n-1; i>0; i--) {
			if(h[i-1] > h[i]) {
				if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				}
			}
		}

		return "Yes";
	}

}
 import java.util.InputMismatchException; InputMismatchException java.util import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {

		try {
			Scanner scanner = new Scanner(System.in);

			int n = scanner.nextInt();

			int [] h = new int [n];
			for(int i=0; i<n; i++) {
				h[i] = scanner.nextInt();
			}

			Main testC = new Main();
			System.out.println(testC.buildStairs(n, h));

			scanner.close();

		} catch (InputMismatchException e) {
			// TODO: handle exception
			System.out.println("整数を入力してください");
		}
	}


	public String buildStairs(int n, int[] h) {
//		for(int i=1; i<n; i++){
//			if(h[i-1] > h[i]) {
//				if(h[i-1] - 1 > h[i]) {
//					return "No";
//				} else if (i != 1 && h[i-2] > h[i-1] - 1){ //1つ目はi-2が-1でエラーになるので弾く
//					return "No";
//				} else {
//					h[i-1] = h[i-1] - 1;
//				}
//			}
//		}

		for(int i=n-1; i>0; i--) {
			if(h[i-1] > h[i]) {
				if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				}
			}
		}

		return "Yes";
	}

} Main public static void main(String[] args) {

		try {
			Scanner scanner = new Scanner(System.in);

			int n = scanner.nextInt();

			int [] h = new int [n];
			for(int i=0; i<n; i++) {
				h[i] = scanner.nextInt();
			}

			Main testC = new Main();
			System.out.println(testC.buildStairs(n, h));

			scanner.close();

		} catch (InputMismatchException e) {
			// TODO: handle exception
			System.out.println("整数を入力してください");
		}
	} main {

		try {
			Scanner scanner = new Scanner(System.in);

			int n = scanner.nextInt();

			int [] h = new int [n];
			for(int i=0; i<n; i++) {
				h[i] = scanner.nextInt();
			}

			Main testC = new Main();
			System.out.println(testC.buildStairs(n, h));

			scanner.close();

		} catch (InputMismatchException e) {
			// TODO: handle exception
			System.out.println("整数を入力してください");
		}
	} try {
			Scanner scanner = new Scanner(System.in);

			int n = scanner.nextInt();

			int [] h = new int [n];
			for(int i=0; i<n; i++) {
				h[i] = scanner.nextInt();
			}

			Main testC = new Main();
			System.out.println(testC.buildStairs(n, h));

			scanner.close();

		} catch (InputMismatchException e) {
			// TODO: handle exception
			System.out.println("整数を入力してください");
		} catch (InputMismatchException e) {
			// TODO: handle exception
			System.out.println("整数を入力してください");
		} InputMismatchException e {
			// TODO: handle exception
			System.out.println("整数を入力してください");
		} System.out.println("整数を入力してください") System.out.println System.out System System.out "整数を入力してください" {
			Scanner scanner = new Scanner(System.in);

			int n = scanner.nextInt();

			int [] h = new int [n];
			for(int i=0; i<n; i++) {
				h[i] = scanner.nextInt();
			}

			Main testC = new Main();
			System.out.println(testC.buildStairs(n, h));

			scanner.close();

		} Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) int n = scanner.nextInt(); n scanner.nextInt() scanner.nextInt scanner int [] h = new int [n]; h new int [n] n for(int i=0; i<n; i++) {
				h[i] = scanner.nextInt();
			} int i=0; int i=0; i 0 i<n i n i++ i++ i {
				h[i] = scanner.nextInt();
			} {
				h[i] = scanner.nextInt();
			} h[i] = scanner.nextInt() h[i] h i scanner.nextInt() scanner.nextInt scanner Main testC = new Main(); testC new Main() System.out.println(testC.buildStairs(n, h)) System.out.println System.out System System.out testC.buildStairs(n, h) testC.buildStairs testC n h scanner.close() scanner.close scanner String[] args args public String buildStairs(int n, int[] h) {
//		for(int i=1; i<n; i++){
//			if(h[i-1] > h[i]) {
//				if(h[i-1] - 1 > h[i]) {
//					return "No";
//				} else if (i != 1 && h[i-2] > h[i-1] - 1){ //1つ目はi-2が-1でエラーになるので弾く
//					return "No";
//				} else {
//					h[i-1] = h[i-1] - 1;
//				}
//			}
//		}

		for(int i=n-1; i>0; i--) {
			if(h[i-1] > h[i]) {
				if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				}
			}
		}

		return "Yes";
	} buildStairs {
//		for(int i=1; i<n; i++){
//			if(h[i-1] > h[i]) {
//				if(h[i-1] - 1 > h[i]) {
//					return "No";
//				} else if (i != 1 && h[i-2] > h[i-1] - 1){ //1つ目はi-2が-1でエラーになるので弾く
//					return "No";
//				} else {
//					h[i-1] = h[i-1] - 1;
//				}
//			}
//		}

		for(int i=n-1; i>0; i--) {
			if(h[i-1] > h[i]) {
				if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				}
			}
		}

		return "Yes";
	} for(int i=n-1; i>0; i--) {
			if(h[i-1] > h[i]) {
				if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				}
			}
		} int i=n-1; int i=n-1; i n-1 n 1 i>0 i 0 i-- i-- i {
			if(h[i-1] > h[i]) {
				if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				}
			}
		} {
			if(h[i-1] > h[i]) {
				if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				}
			}
		} if(h[i-1] > h[i]) {
				if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				}
			} h[i-1] > h[i] h[i-1] h i-1 i 1 h[i] h i {
				if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				}
			} if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				} h[i-1] - 1 > h[i] h[i-1] - 1 h[i-1] h i-1 i 1 1 h[i] h i {
					return "No";
				} return "No"; "No" if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				} i != 1 && h[i-2] > h[i-1] i != 1 i 1 h[i-2] > h[i-1] h[i-2] h i-2 i 2 h[i-1] h i-1 i 1 { //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} return "No"; "No" {
					h[i-1]--;
				} h[i-1]-- h[i-1] h i-1 i 1 return "Yes"; "Yes" int n n int[] h h public class Main {
	public static void main(String[] args) {

		try {
			Scanner scanner = new Scanner(System.in);

			int n = scanner.nextInt();

			int [] h = new int [n];
			for(int i=0; i<n; i++) {
				h[i] = scanner.nextInt();
			}

			Main testC = new Main();
			System.out.println(testC.buildStairs(n, h));

			scanner.close();

		} catch (InputMismatchException e) {
			// TODO: handle exception
			System.out.println("整数を入力してください");
		}
	}


	public String buildStairs(int n, int[] h) {
//		for(int i=1; i<n; i++){
//			if(h[i-1] > h[i]) {
//				if(h[i-1] - 1 > h[i]) {
//					return "No";
//				} else if (i != 1 && h[i-2] > h[i-1] - 1){ //1つ目はi-2が-1でエラーになるので弾く
//					return "No";
//				} else {
//					h[i-1] = h[i-1] - 1;
//				}
//			}
//		}

		for(int i=n-1; i>0; i--) {
			if(h[i-1] > h[i]) {
				if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				}
			}
		}

		return "Yes";
	}

} public class Main {
	public static void main(String[] args) {

		try {
			Scanner scanner = new Scanner(System.in);

			int n = scanner.nextInt();

			int [] h = new int [n];
			for(int i=0; i<n; i++) {
				h[i] = scanner.nextInt();
			}

			Main testC = new Main();
			System.out.println(testC.buildStairs(n, h));

			scanner.close();

		} catch (InputMismatchException e) {
			// TODO: handle exception
			System.out.println("整数を入力してください");
		}
	}


	public String buildStairs(int n, int[] h) {
//		for(int i=1; i<n; i++){
//			if(h[i-1] > h[i]) {
//				if(h[i-1] - 1 > h[i]) {
//					return "No";
//				} else if (i != 1 && h[i-2] > h[i-1] - 1){ //1つ目はi-2が-1でエラーになるので弾く
//					return "No";
//				} else {
//					h[i-1] = h[i-1] - 1;
//				}
//			}
//		}

		for(int i=n-1; i>0; i--) {
			if(h[i-1] > h[i]) {
				if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				}
			}
		}

		return "Yes";
	}

} Main


import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {

		try {
			Scanner scanner = new Scanner(System.in);

			int n = scanner.nextInt();

			int [] h = new int [n];
			for(int i=0; i<n; i++) {
				h[i] = scanner.nextInt();
			}

			Main testC = new Main();
			System.out.println(testC.buildStairs(n, h));

			scanner.close();

		} catch (InputMismatchException e) {
			// TODO: handle exception
			System.out.println("整数を入力してください");
		}
	}


	public String buildStairs(int n, int[] h) {
//		for(int i=1; i<n; i++){
//			if(h[i-1] > h[i]) {
//				if(h[i-1] - 1 > h[i]) {
//					return "No";
//				} else if (i != 1 && h[i-2] > h[i-1] - 1){ //1つ目はi-2が-1でエラーになるので弾く
//					return "No";
//				} else {
//					h[i-1] = h[i-1] - 1;
//				}
//			}
//		}

		for(int i=n-1; i>0; i--) {
			if(h[i-1] > h[i]) {
				if(h[i-1] - 1 > h[i]) {
					return "No";
				} else if (i != 1 && h[i-2] > h[i-1]){ //1つ目はi-2が-1でエラーになるので弾く
					return "No";
				} else {
					h[i-1]--;
				}
			}
		}

		return "Yes";
	}

}

