n, x = list(map(int, input().split()))

a = list(map(int, input().split()))

if n == 1:

    print((abs(x-a[0])))

    exit()

else:

    a.append(x)

    a.sort()

    box = [a[i+1]-a[i] for i in range(n)]

    b = min(box)

    for i in range(1,b+1):

        for j in range(n-1):

            if box[j]%i:

                break

            if j == n-2:

                ans = i

    print(ans)

#reduce(func, list)

#複数の要素を 1 つにまとめたいときに使う．

#具体的には，配列の先頭から 2 つの要素を取り出して処理を行い，

#次はその結果とその次の要素に処理を行う，ということを繰り返す．

from fractions import gcd

from functools import reduce

n, x = list(map(int, input().split()))

a = list(map(int, input().split()))

ans = reduce(gcd, [abs(x-a[i]) for i in range(n)])

print(ans)

n, x = list(map(int, input().split()))
a = list(map(int, input().split()))
if n == 1:
    print((abs(x - a[0])))
    exit()
else:
    a.append(x)
    a.sort()
    box = [a[i + 1] - a[i] for i in range(n)]
    b = min(box)
    for i in range(1, b + 1):
        for j in range(n - 1):
            if box[j] % i:
                break
            if j == n - 2:
                ans = i
    print(ans)

# reduce(func, list)
# 複数の要素を 1 つにまとめたいときに使う．
# 具体的には，配列の先頭から 2 つの要素を取り出して処理を行い，
# 次はその結果とその次の要素に処理を行う，ということを繰り返す．
from fractions import gcd
from functools import reduce

n, x = list(map(int, input().split()))
a = list(map(int, input().split()))
ans = reduce(gcd, [abs(x - a[i]) for i in range(n)])
print(ans)

+# reduce(func, list) +# 複数の要素を 1 つにまとめたいときに使う． +# 具体的には，配列の先頭から 2 つの要素を取り出して処理を行い， +# 次はその結果とその次の要素に処理を行う，ということを繰り返す． +from fractions import gcd +from functools import reduce + -if n == 1: -    print((abs(x - a[0]))) -    exit() -else: -    a.append(x) -    a.sort() -    box = [a[i + 1] - a[i] for i in range(n)] -    b = min(box) -    for i in range(1, b + 1): -        for j in range(n - 1): -            if box[j] % i: -                break -            if j == n - 2: -                ans = i -    print(ans) +ans = reduce(gcd, [abs(x - a[i]) for i in range(n)]) +print(ans)