You are given a sequence a_1, a_2, ..., a_n consisting of n integers.

You can choose any non-negative integer D (i.e. D ≥ 0), and for each a_i you can:

  * add D (only once), i. e. perform a_i := a_i + D, or 
  * subtract D (only once), i. e. perform a_i := a_i - D, or 
  * leave the value of a_i unchanged. 



It is possible that after an operation the value a_i becomes negative.

Your goal is to choose such minimum non-negative integer D and perform changes in such a way, that all a_i are equal (i.e. a_1=a_2=...=a_n).

Print the required D or, if it is impossible to choose such value D, print -1.

For example, for array [2, 8] the value D=3 is minimum possible because you can obtain the array [5, 5] if you will add D to 2 and subtract D from 8. And for array [1, 4, 7, 7] the value D=3 is also minimum possible. You can add it to 1 and subtract it from 7 and obtain the array [4, 4, 4, 4].

Input

The first line of the input contains one integer n (1 ≤ n ≤ 100) — the number of elements in a.

The second line of the input contains n integers a_1, a_2, ..., a_n (1 ≤ a_i ≤ 100) — the sequence a.

Output

Print one integer — the minimum non-negative integer value D such that if you add this value to some a_i, subtract this value from some a_i and leave some a_i without changes, all obtained values become equal.

If it is impossible to choose such value D, print -1.

Examples

Input


6
1 4 4 7 4 1


Output


3


Input


5
2 2 5 2 5


Output


3


Input


4
1 3 3 7


Output


-1


Input


2
2 8


Output


3
import decimal,math
from collections import Counter,defaultdict
from fractions import gcd
from bisect import bisect_right,bisect_left
decimal.getcontext().prec = 15
def primeFactors(n): 
	arr=[]
	while n % 2 == 0: 
		arr.append(2) 
		n = n / 2
	for i in range(3,int(math.sqrt(n))+1,2): 
		while n % i== 0: 
			arr.append(i) 
			n = n / i 
	if n > 2: 
		arr.append(n)
		# print n
	return arr	 
def z_advanced(s):
	Z = [0] * len(s)
	Z[0] = len(s) 
	rt = 0
	lt = 0
	for k in range(1, len(s)):
		if k > rt:
			n = 0
			while n + k < len(s) and s[n] == s[n+k]:
				n += 1
			Z[k] = n
			if n > 0:
				lt = k
				rt = k+n-1
		else:
			p = k - lt  # Pair index.
			right_part_len = rt - k + 1 
			if Z[p] < right_part_len:
				Z[k] = Z[p]
			else:
				i = rt + 1
				while i < len(s) and s[i] == s[i - k]:
					i += 1
				Z[k] = i - k
 
				lt = k
				rt = i - 1
	return max(Z)
def invmod(i,mod):
	return pow(i,mod-2,mod)	
def fact(mod):
	fac= [1,1]
	ifac = [1,1]
	for i in xrange(2,(3*10**5+ 2)):
		fac.append((fac[-1]*i)%mod)
		# ifac.append((ifac[-1]*invmod(i,mod))%mod)
	return fac,ifac	
def SieveOfEratosthenes(n): 
	prime = [True for i in range(n+1)] 
	p = 2
	while (p * p <= n): 
		if (prime[p] == True): 
			
			for i in range(p * p, n+1, p): 
				prime[i] = False
		p += 1
	arr=[]
	for p in range(2, n): 
		if prime[p]: 
			arr.append(p)
	return arr
# dp[i,m] = max(sum(piles[i...i+x] - dp(i+x, max(x,m)) for 1 <= x <= 2*m
# dp[i,m] = max(sum(piles[i...i+x] - dp(i+x, max(x,m)) for 1 <= x <= 2*m
t=int(raw_input())
arr= map(int,raw_input().split())
arr.sort()
l = list(set(arr))
l.sort()
if(len(l)>3):
	print -1
elif(len(l)==1):
	print 0
elif(len(l)==2):
	k = l[1]-l[0]
	if(k%2!=0):
		print abs(k)
	else:
		print abs(l[1]-(l[0]+l[1])/2)	
elif(len(l)==3):
	if(abs(l[2]-l[1])==abs(l[1]-l[0])):
		print abs(l[2]-l[1])
	else:
		print -1

# g=arr[-1]
# for i in arr[:3]:
# 	print g-i,