Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

Maximum Profit

You can obtain profits from foreign exchange margin transactions. For example, if you buy 1000 dollar at a rate of 100 yen per dollar, and sell them at a rate of 108 yen per dollar, you can obtain (108 - 100) × 1000 = 8000 yen.

Write a program which reads values of a currency $R_t$ at a certain time $t$ ($t = 0, 1, 2, ... n-1$), and reports the maximum value of $R_j - R_i$ where $j > i$ .

Input

The first line contains an integer $n$. In the following $n$ lines, $R_t$ ($t = 0, 1, 2, ... n-1$) are given in order.

Output

Print the maximum value in a line.

Constraints

$2 \leq n \leq 200,000$

$1 \leq R_t \leq 10^9$

Sample Input 1

6
5
3
1
3
4
3

Sample Output 1

3

Sample Input 2

3
4
3
2

Sample Output 2

-1

Solution in PHP (judge verdict: Time Limit Exceeded)

<?php

fscanf(STDIN, '%d', $N);
$R = array('min' => array(), 'max' => array());
for ($i = 0; $i < $N; $i++) {
    fscanf(STDIN, '%d', $n);
    //キーが重複していない時に最小値候補を作成
    //ただし最後の値は最小値になり得ない
    if (!isset($R['min'][$n]) && $i !== $N - 1) {
        $R['min'][$n] = $i;
    }

    //常に上書きで最大値候補を作成
    //ただし最初の値は最大値になり得ない
    if ($i > 0) {
        $R['max'][$n] = $i;
    }
}

//利益
$profit = pow(-10, 9);
foreach ($R['min'] as $min => $i) {
    foreach ($R['max'] as $max => $j) {
        if ($i < $j) {
            $profit = max($profit, $max - $min);
        }
    }
}

echo $profit, PHP_EOL;