time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given a sequence a1,a2,…,an

consisting of n

integers.

You can choose any non-negative integer D

(i.e. D≥0), and for each ai

you can:

  • add D

(only once), i. e. perform ai:=ai+D

  • , or
  • subtract D
  • (only once), i. e. perform ai:=ai−D
  • , or
  • leave the value of ai
  • unchanged.

It is possible that after an operation the value ai

becomes negative.

Your goal is to choose such minimum non-negative integer D

and perform changes in such a way, that all ai are equal (i.e. a1=a2=⋯=an

).

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 a1,a2,…,an (1≤ai≤100) — the sequence a

.

Output

Print one integer — the minimum non-negative integer value D

such that if you add this value to some ai, subtract this value from some ai and leave some ai

without changes, all obtained values become equal.

If it is impossible to choose such value D

, print -1.

Examples

Input

Copy

6
1 4 4 7 4 1

Output

Copy

3

Input

Copy

5
2 2 5 2 5

Output

Copy

3

Input

Copy

4
1 3 3 7

Output

Copy

-1

Input

Copy

2
2 8

Output

Copy

3

ac代码

#include<stdio.h>
#include<algorithm>
#include<cstring>
using namespace std;
#define ll long long
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int flag[200]={0},a[100]={0},sum=0;
        for(int i=0;i<n;i++)
        {
            int x;
            scanf("%d",&x);
            if(flag[x]==0)
            {
                flag[x]++;
                sum++;
                a[sum]=x;
            }
        }
        if(sum==1)
        {
            printf("0\n");
            continue;
        }
        else if(sum==2)
        {
            int d=0,min_t=0,max_t=0;
            min_t=min(a[1],a[2]);
            max_t=max(a[1],a[2]);
            d=max_t+min_t;
            //printf("d/2=%d\n",(d/2)*2);
            if(d==((d/2)*2))
            {
                printf("%d\n",max_t-d/2);
            }
            else printf("%d\n",max_t-min_t);
            continue;
        }
        else if(sum>3)
        {
            printf("-1\n");
            continue;
        }
        sort(a+1,a+sum+1);
        if(2*a[2]==a[1]+a[3])
        {
            printf("%d\n",a[3]-a[2]);
        }
        else printf("-1\n");
    }
}