using System;
using System.Numerics;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace debug
{
    class main
    {
        static void Main(string[] args)
        {
            //問題クラスを展開
            ProgramC a = new ProgramC();
            a.main();//実行する

        }

    }

    class ProgramA
    {
        public void main()
        {
            //数値入力する
            string[] s = Console.ReadLine().Split(' ');


            //それぞれの文字列で答えを出す
            if ((int.Parse(s[0]) * int.Parse(s[1])) % 2 == 1)
                Console.WriteLine("Yes");
            else
                Console.WriteLine("No");

        }
    }

    class ProgramB
    {
        public void main()
        {

            //入力
            string input = Console.ReadLine();
            int n = int.Parse(input);

            string[] num = new string[n];


            //char型で読み込み、int型に変換。そこから数を足して、char型に戻す
            for (int i = 0; i < n; i++)
            {
                string s = Console.ReadLine();

                if(num.Contains(s) == true)
                {
                    Console.WriteLine("No");
                    return;
                }

                if(i == 0)
                {
                    num[0] = s;
                }
                else
                {
                    if(num[i -1][num[i-1].Length - 1] != s[0])
                    {
                        Console.WriteLine("No");
                        return;
                    }

                    num[i] = s;
                }

                
            }

            Console.WriteLine("Yes");

        }
    }

    class ProgramC
    {
        public void main()
        {

            //入力
            string[] input = Console.ReadLine().Split();
            long n = long.Parse(input[0]);
            long x = long.Parse(input[1]);

            string[] s = Console.ReadLine().Split();
            long[] a = new long[n];

            //
            for (int i = 0; i < n; i++)
                a[i] = Math.Abs(long.Parse(s[i]) - x);

            if(n==1)
            {
                Console.WriteLine(a[0]);
                return;
            }

            long ans = gcd(a[0], a[1]);

            for(int i = 2;i < n;i++)
                ans = gcd(ans, a[i]);

            //答え出力
            Console.WriteLine(ans);

        }

        /*最大公約数を求める関数*/
        static long gcd(long p, long q)
        {
            if (p < q)
            {
                long temp = p;
                p = q;
                q = temp;
            }

            long r = 1;

            while (r != 0)
            {
                r = p % q;
                p = q;
                q = r;
            }

            return p;
        }
    }

    class ProgramD
    {
        public void main()
        {

            //入力
            int n = int.Parse(Console.ReadLine());

            //後端と辺番号を記録
            List<Hen>[] tree = new List<Hen>[n];

            for (int i = 0; i < n; i++)
                tree[i] = new List<Hen>();

            for (int i = 0; i < n - 1; i++)
            {
                string[] s = Console.ReadLine().Split();
                tree[int.Parse(s[0]) - 1].Add(new Hen(int.Parse(s[1]) - 1, i));
            }

            int[] ans = new int[n];//辺i番目の色
            int[] memo = new int[n];//後端をiとしたときについている辺の番号
            int K = 0;

            Queue<int> q = new Queue<int>();

            q.Enqueue(0);

            //BFSを行う
            while (q.Count != 0)
            {
                int num = q.Count;

                for (int i = 0; i < num; i++)
                {
                    int temp = q.Dequeue();
                    int count = 1;
                    //前の辺の番号を気にしながら辺番号を決める
                    foreach (var t in tree[temp])
                    {
                        //もし前の辺がすでに使っている番号なら飛ばす
                        if (memo[temp] == count)
                            count++;

                        ans[t.b] = count;//答に入れる
                        memo[t.a] = count;//辺の関係を記録しておく
                        q.Enqueue(t.a);//下に伝播する
                        count++;
                    }

                    K = Math.Max(K, count - 1);//必要な色の最大値を求める
                }
            }


            //答え出力
            Console.WriteLine(K);
            for(int i = 0;i < n -1;i++)
                Console.WriteLine(ans[i]);

        }
    }

    class Hen
    {
        public int a;
        public int b;
        public Hen(int a, int b)
        {
            this.a = a;
            this.b = b;
        }
    }


}






Measured memory_bytes: 20832