← Home
 ```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)

	var t int
	scanner.Scan()
	fmt.Sscan(scanner.Text(), &t)

	for tc := 0; tc < t; tc++ {
		var n int
		scanner.Scan()
		fmt.Sscan(scanner.Text(), &n)

		a := make([]int, n)
		for i := 0; i < n; i++ {
			scanner.Scan()
			fmt.Sscan(scanner.Text(), &a[i])
		}

		ans := a[n-1] - a[0]

		if n > 2 {
			minMid := a[1]
			maxMid := a[1]
			for i := 2; i < n-1; i++ {
				if a[i] < minMid {
					minMid = a[i]
				}
				if a[i] > maxMid {
					maxMid = a[i]
				}
			}
			if a[n-1]-minMid > ans {
				ans = a[n-1] - minMid
			}
			if maxMid-a[0] > ans {
				ans = maxMid - a[0]
			}
		}

		for i := 0; i < n-1; i++ {
			if a[i]-a[i+1] > ans {
				ans = a[i] - a[i+1]
			}
		}

		fmt.Println(ans)
	}
}
```