using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Zadatak2512020br1
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] prvi_red = Console.ReadLine().Split(' ');
            int broj_komsija = Convert.ToInt32(prvi_red[0]);
            int udaljenost_od_0 = Convert.ToInt32(prvi_red[1]);
            string[] drugi_red = Console.ReadLine().Split(' ');
            int[] udaljenosti = new int[drugi_red.Length];
            int min_udaljenost = int.MaxValue;
            int max_udaljenost = int.MinValue;


            for (int i = 0; i < drugi_red.Length; i++)
            {
                udaljenosti[i] = Convert.ToInt32(drugi_red[i]);
                if (udaljenosti[i] > max_udaljenost) max_udaljenost = udaljenosti[i];
                if (udaljenosti[i] < min_udaljenost) min_udaljenost = udaljenosti[i];
            }


            if (min_udaljenost > udaljenost_od_0)//ok
            {
                if (udaljenost_od_0 < 0 && max_udaljenost > 0)
                {
                    Console.WriteLine((Math.Abs(max_udaljenost) + Math.Abs(udaljenost_od_0)).ToString());
                    Console.ReadKey();
                }
                if (udaljenost_od_0 > 0 && max_udaljenost > 0)
                {
                    Console.WriteLine((Math.Abs(max_udaljenost) - Math.Abs(udaljenost_od_0)).ToString());
                    Console.ReadKey();
                }
                if (udaljenost_od_0 < 0 && max_udaljenost < 0)
                {
                    Console.WriteLine((Math.Abs(udaljenost_od_0) - Math.Abs(max_udaljenost)).ToString());
                    Console.ReadKey();
                }
            }


            if (max_udaljenost < udaljenost_od_0)//ok
            {
                if (udaljenost_od_0 > 0 && min_udaljenost > 0)
                {
                    Console.WriteLine((Math.Abs(udaljenost_od_0) - Math.Abs(min_udaljenost)).ToString());
                    Console.ReadKey();
                }
                if (udaljenost_od_0 > 0 && min_udaljenost < 0)
                {
                    Console.WriteLine((Math.Abs(min_udaljenost) + Math.Abs(udaljenost_od_0)).ToString());
                    Console.ReadKey();
                }
                if (udaljenost_od_0 < 0 && min_udaljenost < 0)
                {
                    Console.WriteLine((Math.Abs(min_udaljenost) + Math.Abs(udaljenost_od_0)).ToString());
                    Console.ReadKey();
                }
            }

            if (max_udaljenost > udaljenost_od_0 && min_udaljenost < udaljenost_od_0)
            {
                if (udaljenost_od_0 > 0 && min_udaljenost > 0)
                {
                    if (udaljenost_od_0 - min_udaljenost >= max_udaljenost - udaljenost_od_0)
                    {
                        Console.WriteLine((Math.Abs(2 * (max_udaljenost - udaljenost_od_0) + (udaljenost_od_0 - min_udaljenost))).ToString());
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine((Math.Abs(2 * (udaljenost_od_0 - min_udaljenost) + (max_udaljenost - udaljenost_od_0))).ToString());
                        Console.ReadKey();
                    }
                }
                if (udaljenost_od_0 < 0 && max_udaljenost < 0)
                {
                    if (Math.Abs(udaljenost_od_0) - Math.Abs(min_udaljenost) >= Math.Abs(max_udaljenost) - Math.Abs(udaljenost_od_0))
                    {
                        Console.WriteLine(Math.Abs(2 * (Math.Abs(max_udaljenost) - Math.Abs(udaljenost_od_0)) + (Math.Abs(udaljenost_od_0) - Math.Abs(min_udaljenost))).ToString());
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine((Math.Abs(2 * (Math.Abs(udaljenost_od_0) - Math.Abs(min_udaljenost)) + (Math.Abs(max_udaljenost) - Math.Abs(udaljenost_od_0)))).ToString());
                        Console.ReadKey();
                    }
                }
                if (udaljenost_od_0 > 0 && min_udaljenost < 0)
                {
                    if (max_udaljenost - udaljenost_od_0 >= udaljenost_od_0 + Math.Abs(min_udaljenost))
                    {
                        Console.WriteLine((2 * (udaljenost_od_0 + Math.Abs(min_udaljenost)) + max_udaljenost - udaljenost_od_0).ToString());
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine(((2 * (max_udaljenost - udaljenost_od_0) + udaljenost_od_0 + Math.Abs(min_udaljenost)).ToString()));
                        Console.ReadKey();
                    }
                }
                if (udaljenost_od_0 < 0 && max_udaljenost > 0)
                {
                    if (Math.Abs(udaljenost_od_0) + max_udaljenost >= Math.Abs(min_udaljenost) - Math.Abs(udaljenost_od_0))
                    {
                        Console.WriteLine((2 * (Math.Abs(min_udaljenost) - Math.Abs(udaljenost_od_0)) + Math.Abs(udaljenost_od_0) + max_udaljenost).ToString());
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine((2 * (Math.Abs(udaljenost_od_0) + max_udaljenost) + Math.Abs(min_udaljenost) - Math.Abs(udaljenost_od_0)).ToString());
                        Console.ReadKey();
                    }
                }
            }

        }
    }
}