import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
    /**
     * 1 2 3 4
     * 1 2 5
     */
    public static int count = 0;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
//        int[] costs = new int[scanner.nextInt()];
//        for (int i = 0; i < costs.length; i++) {
//            costs[i] = scanner.nextInt();
//        }
//        System.out.println(minCost(costs));
//        int n = scanner.nextInt();
//        int[] array = new int[n];
//        for (int i = 0; i < array.length; i++) {
//            array[i] = scanner.nextInt();
//        }
//        System.out.println(upPath(array));
//        int m = scanner.nextInt();
//        int[][] matrix = new int[n][m];
//        for (int i = 0; i < n; i++) {
//            for (int i1 = 0; i1 < m; i1++) {
//                matrix[i][i1] = scanner.nextInt();
//            }
//        }
//        System.out.println(minPath(matrix));
//        int n = scanner.nextInt();
//        int m = scanner.nextInt();
//        String s1 = scanner.next();
//        String s2 = scanner.next();
//        char[] c1 = s1.toCharArray();
//        char[] c2 = s2.toCharArray();
//        int[][] dp = new int[c1.length + 1][c2.length + 1];
//        for (int i = 1; i <= c1.length; i++) {
//            for (int j = 1; j <= c2.length; j++) {
//                if (c1[i - 1] == c2[j - 1]) {
//                    dp[i][j] = dp[i - 1][j - 1] + 1;
//                } else {
//                    dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j]);
//                }
//            }
//        }
//        System.out.println(dp[c1.length][c2.length]);
//        int n = scanner.nextInt();
//        int[][] letters = new int[n][2];
//        int[] tmp = new int[n];
//        for (int i = 0; i < n; i++) {
//            for (int j = 0; j < 2; j++) {
//                letters[i][j] = scanner.nextInt();
//            }
//        }
//        Arrays.sort(letters, (o1, o2) -> {
//            if (o1[0] != o2[0]) {
//                return o1[0] - o2[0];
//            } else {
//                return o2[1] - o1[1];
//            }
//        });
//        for (int i = 0; i < n; i++) {
//            tmp[i] = letters[i][1];
//        }
//        int n = scanner.nextInt();
//        int[] arr = new int[n];
//        for (int i = 0; i < n; i++) {
//            arr[i] = scanner.nextInt();
//        }
//        System.out.println(process(arr, n));
        int n = scanner.nextInt();
        int[] p = new int[n];
        for (int i = 0; i < p.length; i++) {
            p[i] = scanner.nextInt();
        }
        System.out.println(getMaxMoney(p));
    }

    //买卖股票(一)
    private static int getMaxMoney(int[] p) {
        int res = 0, inMoney = Integer.MAX_VALUE, outMoney = Integer.MIN_VALUE;
        for (int i = 0; i < p.length - 1; i++) {
            if (p[i] >= inMoney) {
                continue;
            }
            if (p[i] < inMoney) {
                inMoney = p[i];
                outMoney = Integer.MIN_VALUE;
            }
            for (int j = i + 1; j < p.length; j++) {
                if (p[j] <= outMoney) {
                    continue;
                }
                if (p[j] > outMoney) {
                    outMoney = p[j];
                    res = Math.max(res, outMoney - inMoney);
                }
            }
        }
        return res;
    }

    /**
     * 7
     * s=1
     * 0      1     2n c i  3
     * 2       0    0       0
     *
     * @param p
     * @return
     */
    private static int jumpGameThree(int[] p) {
        int n = p.length;
        int step = 0, cur = 0, next = 0;
        for (int i = 0; i < n; i++) {
            if (cur < i) {
                step++;
                cur = next;
                if (cur < i) {
                    return -1;
                }
            }
            next = Math.max(next, i + p[i]);//next = 2
        }
        return step;
    }

    /**
     * 6
     * i2    4    2   100   0   1
     * 0  s-1   -1   -1   -1  -1
     *
     * @param a
     * @return
     */
    private static int jumpGameTwo(int[] a) {
        int n = a.length;
        int[] dp = new int[n];
        Arrays.fill(dp, -1);
        dp[0] = a[0];
        for (int i = 0; i < n - 1; i++) {
            if (dp[i] < 0 || a[i] == 0) {
                continue;
            }
            int end = Math.min(n, i + a[i] + 1);
            for (int j = i + 1; j < end; j++) {
                dp[j] = Math.max(dp[j], dp[i] + a[j]);
            }
        }
        return dp[n - 1];
    }

    private static boolean jumpGame(int[] p) {
        int n = p.length;
        boolean[] dp = new boolean[n];
        dp[0] = true;
        for (int i = 0; i < n; i++) {
            if (dp[i]) {
                for (int j = i + 1; (j <= i + p[i]) && j < n; j++) {
                    dp[j] = true;
                }
            } else {
                break;
            }
        }
        return dp[n - 1];
    }

    private static int deleteMaxValue(int[] p) {
        int[] dp = new int[1001];
        int[] trans = new int[1001];
        for (int i = 0; i < p.length; i++) {
            trans[dp[i]] += dp[i];
        }
        dp[0] = 0;
        dp[1] = trans[1];
        for (int i = 2; i < trans.length; i++) {
            dp[i] = Math.max(dp[i - 1], dp[i - 2] + trans[i]);
        }
        return dp[dp.length - 1];
    }

    private static int process(int[] arr, int n) {
        int[] dp1 = new int[n];
        int[] dp2 = new int[n];
        dp1[1] = arr[0];
        dp2[1] = arr[1];
        int res = Math.max(arr[0], arr[1]);
        for (int i = 2; i < n; i++) {
            dp1[i] = Math.max(dp1[i - 2] + arr[i - 1], dp1[i - 1]);
            dp2[i] = Math.max(dp2[i - 2] + arr[i], dp2[i - 1]);
            res = Math.max(dp1[i], dp2[i]);
        }
        return res;
    }

    private static void getMaxValue(int[] arr) {
        Scanner scanner = new Scanner(System.in);
        int n = arr.length;
        for (int i = 0; i < n; i++) {
            arr[i] = scanner.nextInt();
        }
        if (n == 1) {
            System.out.println(arr[0]);
        }
        if (n == 2) {
            System.out.println(Math.max(arr[1], arr[0]));
        }
        int[] dp = new int[n];
        dp[0] = arr[0];
        dp[1] = arr[1];
        dp[2] = arr[0] + arr[2];
        for (int i = 3; i < dp.length; i++) {
            dp[i] = arr[i] + (Math.max(dp[i - 2], dp[i - 3]));
        }
        System.out.println(Math.max(dp[n - 1], dp[n - 2]));
    }


    public static int getMaxLength(String s1, String s2) {
        char[] c1 = s1.toCharArray();
        char[] c2 = s2.toCharArray();
        int[][] dp = new int[c1.length + 1][c2.length + 1];
        for (int i = 1; i <= c1.length; i++) {
            for (int j = 1; j <= c2.length; j++) {
                if (c1[i - 1] == c2[j - 1]) {
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                } else {
                    dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j]);
                }
            }
        }
        return dp[c1.length][c2.length];
    }

    public static int upPath(int[] array) {
        int n = array.length;
        int[] dp = new int[n];
        Arrays.fill(dp, 1);
        int res = 1;
        for (int i = 1; i < n; i++) {
            for (int j = 0; j < i; j++) {
                if (array[i] > array[j]) {
                    dp[i] = Math.max(dp[i], dp[j] + 1);
                }
                res = Math.max(res, dp[i]);
            }
        }
        return res;
    }

    private static int minPath(int[][] matrix) {
        if (matrix == null || matrix.length < 1 || matrix[0] == null || matrix[0].length < 1) {
            return 0;
        }
        int n = matrix.length;
        int m = matrix[0].length;
        int[][] dp = new int[n][m];
        dp[0][0] = matrix[0][0];
        for (int i = 1; i < m; i++) {
            dp[0][i] = dp[0][i - 1] + matrix[0][i];
        }
        for (int i = 1; i < n; i++) {
            dp[i][0] = dp[i - 1][0] + matrix[i][0];
        }
        for (int i = 1; i < n; i++) {
            for (int j = 1; j < m; j++) {
                dp[i][j] = Math.min(dp[i - 1][j] + matrix[i][j], dp[i][j - 1] + matrix[i][j]);
            }
        }
        return dp[n - 1][m - 1];
    }

    /**
     * 3 2 -2 4
     *
     * @param nums
     * @return
     */
    private static int Multiply(int[] nums) {
        int preMax = 1;
        int preMin = 1;
        int res = (int) -1e9;
        for (int num : nums) {
            int a = preMax * num, b = preMin * num;
            //3 3 6 6 -12 -4
            preMax = Math.max(Math.max(a, b), num);
            //3 6 -2
            preMin = Math.min(Math.min(a, b), num);
            //3 2 -12
            res = Math.max(preMax, res);
        }
        return res;
    }

    private static int maxLength(int[] array) {
        int res = array[0], cur = array[0];
        for (int i = 1; i < array.length; i++) {
            cur = Math.max(array[i], array[i] + cur);
            res = Math.max(res, cur);
        }
        return res;
    }

    private static int numTree(int n) {
        int[] dp = new int[n + 1];
        dp[0] = 1;
        dp[1] = 1;
        for (int i = 2; i <= n; i++) {
            for (int j = 0; j < i; j++) {
                dp[i] += dp[j] * dp[i - j - 1];
            }
        }
        return dp[n];
    }

    private static int minCost(int[] costs) {
        int[] dp = new int[costs.length + 1];
        for (int i = 2; i <= costs.length; i++) {
            dp[i] = Math.min(dp[i - 2] + costs[i - 2], dp[i - 1] + costs[i - 1]);
        }
        return dp[costs.length];
    }

    private static void dfs(int n) {
        if (n < 0) {
            return;
        }
        if (n == 0) {
            count++;
            return;
        }
        for (int i = 1; i <= n; i++) {
            dfs(n - i);
        }
    }

    public static ArrayList<String> stringArrayList = new ArrayList<>();

    public static ArrayList<ArrayList<Integer>> arrayList = new ArrayList<>();

    public static void main1(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        String fourPai = scanner.nextLine();
        String[] strings = fourPai.split(" ");
        int[] fourNum = new int[4];
        int index = 0;
        for (String string : strings) {
            if (string.compareTo("joker") == 0 || string.compareTo("JOKER") == 0) {
                System.out.println("ERROR");
                return;
            }
            if (string.compareTo("J") == 0) {
                fourNum[index++] = 11;
                continue;
            }
            if (string.compareTo("Q") == 0) {
                fourNum[index++] = 12;
                continue;
            }
            if (string.compareTo("K") == 0) {
                fourNum[index++] = 13;
                continue;
            }
            if (string.compareTo("A") == 0) {
                fourNum[index++] = 1;
            } else {
                fourNum[index++] = Integer.parseInt(string);
            }
        }
        ArrayList<Integer> integerArrayList = new ArrayList<>();
        ArrayList<Integer> indexAll = new ArrayList<>();
        for (int i = 0; i < fourNum.length; i++) {
            integerArrayList.add(fourNum[i]);
            indexAll.add(i);
            dfs(i, fourNum, integerArrayList, indexAll);
            indexAll.clear();
            integerArrayList.clear();
        }
        for (ArrayList<Integer> List : arrayList) {
            for (int i = 0; i < List.size(); i++) {
                getString(i + 1, List, new StringBuffer().append(List.get(i)), List.get(i));
                if (stringArrayList.size() > 0 && stringArrayList.get(0).length() < 11) {
                    changeString(stringArrayList.get(0));
                    return;
                }
                break;
            }
        }
        System.out.println("NONE");
    }

    private static void changeString(String s) {
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            if (Character.isDigit(s.charAt(i))) {
                switch (s.charAt(i)) {

                }
            }
        }
    }

    private static void getString(int i, ArrayList<Integer> list, StringBuffer stringBuffer, Integer sum) {
        if (i == list.size()) {
            if (sum == 24) {
                stringArrayList.add(stringBuffer.toString());
            }
            return;
        }
        for (int j = i; j < list.size(); j++) {
            Integer integer = list.get(j);
            sum = sum + integer;
            stringBuffer.append("+");
            getString(j + 1, list, stringBuffer.append(integer), sum);
            stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length());
            sum = sum - integer;
        }
        for (int j = i; j < list.size(); j++) {
            Integer integer = list.get(j);
            sum = sum - integer;
            stringBuffer.append("-");
            getString(j + 1, list, stringBuffer.append(integer), sum);
            stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length());
            sum = sum + integer;
        }
        for (int j = i; j < list.size(); j++) {
            Integer integer = list.get(j);
            sum = sum * integer;
            stringBuffer.append("*");
            getString(j + 1, list, stringBuffer.append(integer), sum);
            stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length());
            sum = sum / integer;
        }
        for (int j = i; j < list.size(); j++) {
            Integer integer = list.get(j);
            int temp = sum;
            sum = sum / integer;
            stringBuffer.append("/");
            getString(j + 1, list, stringBuffer.append(integer), sum);
            stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length());
            sum = temp;
        }
    }

    private static void dfs(int i, int[] fourNum, ArrayList<Integer> integerArrayList, ArrayList<Integer> indexAll) {
        if (integerArrayList.size() == fourNum.length) {
            if (!arrayList.contains(integerArrayList)) {
                arrayList.add(new ArrayList<>(integerArrayList));
            }
            return;
        }
        for (int j = 0; j < fourNum.length; j++) {
            if (!indexAll.contains(j)) {
                integerArrayList.add(fourNum[j]);
                indexAll.add(j);
                dfs(j, fourNum, integerArrayList, indexAll);
                indexAll.remove(indexAll.size() - 1);
                integerArrayList.remove(integerArrayList.size() - 1);
            }
        }
    }

    public int[] solve(int n, int m, int[] a) {
        // write code here
        if (m % n == 0) {
            return a;
        }
        int j = 0;
        m = m % n;
        for (int i = a.length - m; i < a.length; i++) {
            int temp = a[i];
            a[i] = a[j] + m;
            a[j++] = temp;
        }
        for (int i = j; i < a.length - m; i++) {
            a[i] = a[i] - m;
        }
        return a;
    }

    public ArrayList<Integer> spiralOrder(int[][] matrix) {
        ArrayList<Integer> res = new ArrayList<>();
        if (matrix.length == 0) return res;
        int top = 0, bottom = matrix.length - 1;
        int left = 0, right = matrix[0].length - 1;
        while (top < (matrix.length + 1) / 2 && left < (matrix[0].length + 1) / 2) {
            //上面  左到右
            for (int i = left; i <= right; i++) {
                res.add(matrix[top][i]);
            }

            //右边 上到下
            for (int i = top + 1; i <= bottom; i++) {
                res.add(matrix[i][right]);
            }

            //下面  右到左
            for (int i = right - 1; top != bottom && i >= left; i--) {
                res.add(matrix[bottom][i]);
            }

            //左边 下到上
            for (int i = bottom - 1; left != right && i >= top + 1; i--) {
                res.add(matrix[i][left]);
            }
            // 遍历完一圈之后,所有往里面靠
            ++top;
            --bottom;
            ++left;
            --right;
        }
        return res;
    }
}