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 java.util.*;
import java.io.*;
public class Codeforces {
	static int MAX = (int)1e5+1;
	static boolean leaf[];
	//static int count[],n,m;
	//static int n,m,arr[],size;
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		 int n = input.nextInt();
		 int arr[] = new int[n];
		 int ans = 99999;
		 for(int i =0;i<n;i++)arr[i] = input.nextInt();
		 boolean ok = false;
		 for(int i =1;i<=100;i++) {
			 HashSet<Integer>set = new HashSet<>();
			 int target = i;
			 for(int j =0;j<n;j++) {
				 if(target - arr[j]== 0)continue;
				//if(target == 5) System.out.println(target-arr[j]);
				 set.add(Math.abs(target-arr[j]));
			 }
			 if(set.size() == 0)ans = 0;
			 if(set.size() ==1) {
				 int val = set.iterator().next();
				ans = Math.min(val,ans);
				ok = true;
			 }
		 }
		 if(!ok)System.out.println(-1);
		 else System.out.println(ans);
	}
}

/*****************************************Notes**********************************************

1.Never use String.charAt for integers=> only works till 9 if integer val is 28,39,555
charAt would pick only the first digit. Better use Integer.parseInt() to convert string to Integer

2. even empty for loop can be used in certain cases.eg 'C - Pinkie Pie Eats Patty-cakes'. 
the check function of binary search. extra code but learnt some approach = SecondThreads implementation

3. The two list subsequence method eg:D. Binary String To Subsequences (works only in the case of two characters)


4. when there is a range that is computed there are case where index out of bounds might occur to keep
the ranges proper use min max trick=> leftfarthest = max(0,computed) && rightFarthest = min(n-1,computed)

*/