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
#include <bits/stdc++.h>
using namespace std;
long long ok(long long a, long long b, long long c, long long d, long long e,
             long long f) {
  return ((c - a) * (f - b)) == ((e - a) * (d - b));
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long n, m, i, j, k, l, t, r, e, p = 0, f;
  cin >> n;
  long long arr[n];
  for (i = 0; i < n; i++) cin >> arr[i];
  sort(arr, arr + n);
  long long sum, rum, kum, cum, val;
  for (i = 0; i <= 100; i++) {
    p = -1;
    sum = arr[0] + i;
    cum = arr[0] - i;
    kum = arr[n - 1] + i;
    rum = arr[n - 1] - i;
    if (sum == arr[n - 1])
      val = sum;
    else if (arr[n - 1] == cum)
      val = cum;
    else if (arr[0] == kum)
      val = kum;
    else if (arr[0] == rum)
      val = rum;
    else if (sum == kum) {
      val = sum;
    } else if (sum == rum)
      val = sum;
    else if (cum == kum)
      val = cum;
    else if (cum == rum)
      val = cum;
    else
      continue;
    for (j = 1, k = n - 2; j <= k; j++, k--) {
      if (arr[j] + i == val || arr[j] == val) {
        if (arr[k] - i == val || arr[k] + i == val || arr[k] == val)
          continue;
        else {
          p = 1;
          break;
        }
      } else if (arr[j] - i == val || arr[j] == val) {
        if (arr[k] - i == val || arr[k] + i == val || arr[k] == val)
          continue;
        else {
          p = 1;
          break;
        }
      } else {
        p = 1;
        break;
      }
    }
    if (p == -1 && j > k) {
      cout << i << endl;
      return 0;
    }
  }
  cout << "-1" << endl;
  return 0;
}
