import java.util.Scanner;

public class Main {

	/**
	 * それぞれの購入地点から得られる最大利ざやを求め、 最も利益の大きい値を出力する
	 * 
	 * @param args
	 */
	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		int[] value = new int[num];
		for (int i = 0; i < num; i++) {
			value[i] = scan.nextInt();
		}

		System.out.println(ExchangeMax(value));

		scan.close();
	}

	/**
	 * 為替の最小値と最大値を見つけ、その差を最大利ざやとする。
	 * 
	 * @param value
	 *            為替レート
	 * @return 最大利ざや
	 */
	static int ExchangeMax(int[] value) {
		int max = Integer.MIN_VALUE;
		int min = value[0];
		for (int i = 1; i < value.length; i++) {
			max = Math.max(max, value[i] - min);
			min = Math.min(min, value[i]);
		}
		return max;
	}

}
 import java.util.Scanner; Scanner java.util public class Main {

	/**
	 * それぞれの購入地点から得られる最大利ざやを求め、 最も利益の大きい値を出力する
	 * 
	 * @param args
	 */
	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		int[] value = new int[num];
		for (int i = 0; i < num; i++) {
			value[i] = scan.nextInt();
		}

		System.out.println(ExchangeMax(value));

		scan.close();
	}

	/**
	 * 為替の最小値と最大値を見つけ、その差を最大利ざやとする。
	 * 
	 * @param value
	 *            為替レート
	 * @return 最大利ざや
	 */
	static int ExchangeMax(int[] value) {
		int max = Integer.MIN_VALUE;
		int min = value[0];
		for (int i = 1; i < value.length; i++) {
			max = Math.max(max, value[i] - min);
			min = Math.min(min, value[i]);
		}
		return max;
	}

} Main /**
	 * それぞれの購入地点から得られる最大利ざやを求め、 最も利益の大きい値を出力する
	 * 
	 * @param args
	 */
	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		int[] value = new int[num];
		for (int i = 0; i < num; i++) {
			value[i] = scan.nextInt();
		}

		System.out.println(ExchangeMax(value));

		scan.close();
	} main {
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		int[] value = new int[num];
		for (int i = 0; i < num; i++) {
			value[i] = scan.nextInt();
		}

		System.out.println(ExchangeMax(value));

		scan.close();
	} Scanner scan = new Scanner(System.in); scan new Scanner(System.in) int num = scan.nextInt(); num scan.nextInt() scan.nextInt scan int[] value = new int[num]; value new int[num] num for (int i = 0; i < num; i++) {
			value[i] = scan.nextInt();
		} int i = 0; int i = 0; i 0 i < num i num i++ i++ i {
			value[i] = scan.nextInt();
		} {
			value[i] = scan.nextInt();
		} value[i] = scan.nextInt() value[i] value i scan.nextInt() scan.nextInt scan System.out.println(ExchangeMax(value)) System.out.println System.out System System.out ExchangeMax(value) ExchangeMax value scan.close() scan.close scan String args[] args /**
	 * 為替の最小値と最大値を見つけ、その差を最大利ざやとする。
	 * 
	 * @param value
	 *            為替レート
	 * @return 最大利ざや
	 */
	static int ExchangeMax(int[] value) {
		int max = Integer.MIN_VALUE;
		int min = value[0];
		for (int i = 1; i < value.length; i++) {
			max = Math.max(max, value[i] - min);
			min = Math.min(min, value[i]);
		}
		return max;
	} ExchangeMax {
		int max = Integer.MIN_VALUE;
		int min = value[0];
		for (int i = 1; i < value.length; i++) {
			max = Math.max(max, value[i] - min);
			min = Math.min(min, value[i]);
		}
		return max;
	} int max = Integer.MIN_VALUE; max Integer.MIN_VALUE Integer Integer.MIN_VALUE int min = value[0]; min value[0] value 0 for (int i = 1; i < value.length; i++) {
			max = Math.max(max, value[i] - min);
			min = Math.min(min, value[i]);
		} int i = 1; int i = 1; i 1 i < value.length i value.length value value.length i++ i++ i {
			max = Math.max(max, value[i] - min);
			min = Math.min(min, value[i]);
		} {
			max = Math.max(max, value[i] - min);
			min = Math.min(min, value[i]);
		} max = Math.max(max, value[i] - min) max Math.max(max, value[i] - min) Math.max Math max value[i] - min value[i] value i min min = Math.min(min, value[i]) min Math.min(min, value[i]) Math.min Math min value[i] value i return max; max int[] value value public class Main {

	/**
	 * それぞれの購入地点から得られる最大利ざやを求め、 最も利益の大きい値を出力する
	 * 
	 * @param args
	 */
	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		int[] value = new int[num];
		for (int i = 0; i < num; i++) {
			value[i] = scan.nextInt();
		}

		System.out.println(ExchangeMax(value));

		scan.close();
	}

	/**
	 * 為替の最小値と最大値を見つけ、その差を最大利ざやとする。
	 * 
	 * @param value
	 *            為替レート
	 * @return 最大利ざや
	 */
	static int ExchangeMax(int[] value) {
		int max = Integer.MIN_VALUE;
		int min = value[0];
		for (int i = 1; i < value.length; i++) {
			max = Math.max(max, value[i] - min);
			min = Math.min(min, value[i]);
		}
		return max;
	}

} public class Main {

	/**
	 * それぞれの購入地点から得られる最大利ざやを求め、 最も利益の大きい値を出力する
	 * 
	 * @param args
	 */
	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		int[] value = new int[num];
		for (int i = 0; i < num; i++) {
			value[i] = scan.nextInt();
		}

		System.out.println(ExchangeMax(value));

		scan.close();
	}

	/**
	 * 為替の最小値と最大値を見つけ、その差を最大利ざやとする。
	 * 
	 * @param value
	 *            為替レート
	 * @return 最大利ざや
	 */
	static int ExchangeMax(int[] value) {
		int max = Integer.MIN_VALUE;
		int min = value[0];
		for (int i = 1; i < value.length; i++) {
			max = Math.max(max, value[i] - min);
			min = Math.min(min, value[i]);
		}
		return max;
	}

} Main
import java.util.Scanner;

public class Main {

	/**
	 * それぞれの購入地点から得られる最大利ざやを求め、 最も利益の大きい値を出力する
	 * 
	 * @param args
	 */
	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		int[] value = new int[num];
		for (int i = 0; i < num; i++) {
			value[i] = scan.nextInt();
		}

		System.out.println(ExchangeMax(value));

		scan.close();
	}

	/**
	 * 為替の最小値と最大値を見つけ、その差を最大利ざやとする。
	 * 
	 * @param value
	 *            為替レート
	 * @return 最大利ざや
	 */
	static int ExchangeMax(int[] value) {
		int max = Integer.MIN_VALUE;
		int min = value[0];
		for (int i = 1; i < value.length; i++) {
			max = Math.max(max, value[i] - min);
			min = Math.min(min, value[i]);
		}
		return max;
	}

}

