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.io.BufferedReader;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Arrays;

public class C0416201902 {

  private static boolean possible(long array[], long diff, long element) {
    for (int i = 0; i < array.length; i++) {
      if (array[i] == element || array[i] + diff == element || array[i] - diff == element)
        continue;
      else
        return false;
    }
    return true;
  }

  private static void solve(final Input input, final PrintWriter output) throws IOException {
    int n = input.nextInt();
    long[] array = new long[n];
    for (int i = 0; i < n; i++)
      array[i] = input.nextInt();
    Arrays.sort(array);
    long diff = array[array.length - 1] - array[0];
    if ((diff & 1) == 0 && (possible(array, diff / 2, array[0] + diff / 2)
        || possible(array, diff / 2, array[0]))) {
      output.println(diff / 2);
    } else if (possible(array, diff, array[0] + diff) || possible(array, diff, array[0])) {
      output.println(diff);
    } else {
      output.println(-1);
    }
  }

  public static void main(String[] args) throws IOException {
    try (final PrintWriter output = new PrintWriter(System.out);
        final Input input = new Input(new BufferedReader(new InputStreamReader(System.in)))) {
      solve(input, output);
    }
  }

  private static class Input implements Closeable {

    private final BufferedReader bufferedReader;
    private static final StringBuilder stringBuilder = new StringBuilder();

    public Input(final BufferedReader in) {
      this.bufferedReader = in;
    }

    private boolean isAnySeperator(final char ch) {
      return ch == ' ' || ch == '\n' || ch == '\t' || ch == '\r';
    }

    private boolean isLineSeperator(final char ch) {
      return ch == '\n' || ch == '\r';
    }

    public String next() throws IOException {
      stringBuilder.setLength(0);
      while (true) {
        int c = bufferedReader.read();
        if (c == -1) {
          return null;
        }
        char ch = (char) c;
        if (!isAnySeperator(ch)) {
          stringBuilder.append(ch);
          break;
        }
      }
      while (true) {
        int c = bufferedReader.read();
        char ch = (char) c;
        if (c == -1 || isAnySeperator(ch)) {
          break;
        }
        stringBuilder.append(ch);
      }
      return stringBuilder.toString();
    }

    public String nextLine() throws IOException {
      stringBuilder.setLength(0);
      while (true) {
        final int c = bufferedReader.read();
        if (c == -1) {
          return null;
        }
        final char ch = (char) c;
        if (!isLineSeperator(ch)) {
          stringBuilder.append(ch);
          break;
        }
      }
      while (true) {
        int c = bufferedReader.read();
        char ch = (char) c;
        if (c == -1 || isLineSeperator(ch)) {
          break;
        }
        stringBuilder.append(ch);
      }
      return stringBuilder.toString();
    }

    public int nextInt() throws IOException {
      return Integer.parseInt(next(), 10);
    }

    public long nextLong() throws IOException {
      return Long.parseLong(next(), 10);
    }

    @Override
    public void close() throws IOException {
      bufferedReader.close();
    }
  }
}
