import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main
{
    public static void main(String[] args)
    {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        Task solver = new Task();
        solver.solve(1, in, out);
        out.close();
    }

    static class Task
    {
        public void solve(int testNumber, Scanner in, PrintWriter out)
        {
            int K = in.nextInt();
            int N = in.nextInt();
            int nums[] = CPUtils.readIntArray(N, in);
            int distance = Integer.MAX_VALUE;
            for (int i = 0; i < nums.length; i++)
            {
                distance = Math.min(distance, getD(i, i + (nums.length - 1), nums, K));
            }
            out.print(distance);
        }

        private int getD(int start, int end, int nums[], int K)
        {
            end = end % nums.length;
            if (nums[end] < nums[start])
            {
                return (K - nums[start] + nums[end]);
            } else
            {
                return nums[end] - nums[start];
            }
        }

    }

    static class CPUtils
    {
        public static int[] readIntArray(int size, Scanner in)
        {
            int[] array = new int[size];
            for (int i = 0; i < size; i++)
            {
                array[i] = in.nextInt();
            }
            return array;
        }

    }
}
 import java.io.OutputStream; OutputStream java.io import java.io.IOException; IOException java.io import java.io.InputStream; InputStream java.io import java.io.PrintWriter; PrintWriter java.io import java.util.Scanner; Scanner java.util public class Main
{
    public static void main(String[] args)
    {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        Task solver = new Task();
        solver.solve(1, in, out);
        out.close();
    }

    static class Task
    {
        public void solve(int testNumber, Scanner in, PrintWriter out)
        {
            int K = in.nextInt();
            int N = in.nextInt();
            int nums[] = CPUtils.readIntArray(N, in);
            int distance = Integer.MAX_VALUE;
            for (int i = 0; i < nums.length; i++)
            {
                distance = Math.min(distance, getD(i, i + (nums.length - 1), nums, K));
            }
            out.print(distance);
        }

        private int getD(int start, int end, int nums[], int K)
        {
            end = end % nums.length;
            if (nums[end] < nums[start])
            {
                return (K - nums[start] + nums[end]);
            } else
            {
                return nums[end] - nums[start];
            }
        }

    }

    static class CPUtils
    {
        public static int[] readIntArray(int size, Scanner in)
        {
            int[] array = new int[size];
            for (int i = 0; i < size; i++)
            {
                array[i] = in.nextInt();
            }
            return array;
        }

    }
} Main public static void main(String[] args)
    {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        Task solver = new Task();
        solver.solve(1, in, out);
        out.close();
    } main {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        Task solver = new Task();
        solver.solve(1, in, out);
        out.close();
    } InputStream inputStream = System.in; inputStream System.in System System.in OutputStream outputStream = System.out; outputStream System.out System System.out Scanner in = new Scanner(inputStream); in new Scanner(inputStream) PrintWriter out = new PrintWriter(outputStream); out new PrintWriter(outputStream) Task solver = new Task(); solver new Task() solver.solve(1, in, out) solver.solve solver 1 in out out.close() out.close out String[] args args static class Task
    {
        public void solve(int testNumber, Scanner in, PrintWriter out)
        {
            int K = in.nextInt();
            int N = in.nextInt();
            int nums[] = CPUtils.readIntArray(N, in);
            int distance = Integer.MAX_VALUE;
            for (int i = 0; i < nums.length; i++)
            {
                distance = Math.min(distance, getD(i, i + (nums.length - 1), nums, K));
            }
            out.print(distance);
        }

        private int getD(int start, int end, int nums[], int K)
        {
            end = end % nums.length;
            if (nums[end] < nums[start])
            {
                return (K - nums[start] + nums[end]);
            } else
            {
                return nums[end] - nums[start];
            }
        }

    } Task public void solve(int testNumber, Scanner in, PrintWriter out)
        {
            int K = in.nextInt();
            int N = in.nextInt();
            int nums[] = CPUtils.readIntArray(N, in);
            int distance = Integer.MAX_VALUE;
            for (int i = 0; i < nums.length; i++)
            {
                distance = Math.min(distance, getD(i, i + (nums.length - 1), nums, K));
            }
            out.print(distance);
        } solve {
            int K = in.nextInt();
            int N = in.nextInt();
            int nums[] = CPUtils.readIntArray(N, in);
            int distance = Integer.MAX_VALUE;
            for (int i = 0; i < nums.length; i++)
            {
                distance = Math.min(distance, getD(i, i + (nums.length - 1), nums, K));
            }
            out.print(distance);
        } int K = in.nextInt(); K in.nextInt() in.nextInt in int N = in.nextInt(); N in.nextInt() in.nextInt in int nums[] = CPUtils.readIntArray(N, in); nums CPUtils.readIntArray(N, in) CPUtils.readIntArray CPUtils N in int distance = Integer.MAX_VALUE; distance Integer.MAX_VALUE Integer Integer.MAX_VALUE for (int i = 0; i < nums.length; i++)
            {
                distance = Math.min(distance, getD(i, i + (nums.length - 1), nums, K));
            } int i = 0; int i = 0; i 0 i < nums.length i nums.length nums nums.length i++ i++ i {
                distance = Math.min(distance, getD(i, i + (nums.length - 1), nums, K));
            } {
                distance = Math.min(distance, getD(i, i + (nums.length - 1), nums, K));
            } distance = Math.min(distance, getD(i, i + (nums.length - 1), nums, K)) distance Math.min(distance, getD(i, i + (nums.length - 1), nums, K)) Math.min Math distance getD(i, i + (nums.length - 1), nums, K) getD i i + (nums.length - 1) i (nums.length - 1) nums.length nums nums.length 1 nums K out.print(distance) out.print out distance int testNumber testNumber Scanner in in PrintWriter out out private int getD(int start, int end, int nums[], int K)
        {
            end = end % nums.length;
            if (nums[end] < nums[start])
            {
                return (K - nums[start] + nums[end]);
            } else
            {
                return nums[end] - nums[start];
            }
        } getD {
            end = end % nums.length;
            if (nums[end] < nums[start])
            {
                return (K - nums[start] + nums[end]);
            } else
            {
                return nums[end] - nums[start];
            }
        } end = end % nums.length end end % nums.length end nums.length nums nums.length if (nums[end] < nums[start])
            {
                return (K - nums[start] + nums[end]);
            } else
            {
                return nums[end] - nums[start];
            } nums[end] < nums[start] nums[end] nums end nums[start] nums start {
                return (K - nums[start] + nums[end]);
            } return (K - nums[start] + nums[end]); (K - nums[start] + nums[end]) K - nums[start] K nums[start] nums start nums[end] nums end {
                return nums[end] - nums[start];
            } return nums[end] - nums[start]; nums[end] - nums[start] nums[end] nums end nums[start] nums start int start start int end end int nums[] nums int K K static class CPUtils
    {
        public static int[] readIntArray(int size, Scanner in)
        {
            int[] array = new int[size];
            for (int i = 0; i < size; i++)
            {
                array[i] = in.nextInt();
            }
            return array;
        }

    } CPUtils public static int[] readIntArray(int size, Scanner in)
        {
            int[] array = new int[size];
            for (int i = 0; i < size; i++)
            {
                array[i] = in.nextInt();
            }
            return array;
        } readIntArray {
            int[] array = new int[size];
            for (int i = 0; i < size; i++)
            {
                array[i] = in.nextInt();
            }
            return array;
        } int[] array = new int[size]; array new int[size] size for (int i = 0; i < size; i++)
            {
                array[i] = in.nextInt();
            } int i = 0; int i = 0; i 0 i < size i size i++ i++ i {
                array[i] = in.nextInt();
            } {
                array[i] = in.nextInt();
            } array[i] = in.nextInt() array[i] array i in.nextInt() in.nextInt in return array; array int size size Scanner in in public class Main
{
    public static void main(String[] args)
    {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        Task solver = new Task();
        solver.solve(1, in, out);
        out.close();
    }

    static class Task
    {
        public void solve(int testNumber, Scanner in, PrintWriter out)
        {
            int K = in.nextInt();
            int N = in.nextInt();
            int nums[] = CPUtils.readIntArray(N, in);
            int distance = Integer.MAX_VALUE;
            for (int i = 0; i < nums.length; i++)
            {
                distance = Math.min(distance, getD(i, i + (nums.length - 1), nums, K));
            }
            out.print(distance);
        }

        private int getD(int start, int end, int nums[], int K)
        {
            end = end % nums.length;
            if (nums[end] < nums[start])
            {
                return (K - nums[start] + nums[end]);
            } else
            {
                return nums[end] - nums[start];
            }
        }

    }

    static class CPUtils
    {
        public static int[] readIntArray(int size, Scanner in)
        {
            int[] array = new int[size];
            for (int i = 0; i < size; i++)
            {
                array[i] = in.nextInt();
            }
            return array;
        }

    }
} public class Main
{
    public static void main(String[] args)
    {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        Task solver = new Task();
        solver.solve(1, in, out);
        out.close();
    }

    static class Task
    {
        public void solve(int testNumber, Scanner in, PrintWriter out)
        {
            int K = in.nextInt();
            int N = in.nextInt();
            int nums[] = CPUtils.readIntArray(N, in);
            int distance = Integer.MAX_VALUE;
            for (int i = 0; i < nums.length; i++)
            {
                distance = Math.min(distance, getD(i, i + (nums.length - 1), nums, K));
            }
            out.print(distance);
        }

        private int getD(int start, int end, int nums[], int K)
        {
            end = end % nums.length;
            if (nums[end] < nums[start])
            {
                return (K - nums[start] + nums[end]);
            } else
            {
                return nums[end] - nums[start];
            }
        }

    }

    static class CPUtils
    {
        public static int[] readIntArray(int size, Scanner in)
        {
            int[] array = new int[size];
            for (int i = 0; i < size; i++)
            {
                array[i] = in.nextInt();
            }
            return array;
        }

    }
} Main
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main
{
    public static void main(String[] args)
    {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        Task solver = new Task();
        solver.solve(1, in, out);
        out.close();
    }

    static class Task
    {
        public void solve(int testNumber, Scanner in, PrintWriter out)
        {
            int K = in.nextInt();
            int N = in.nextInt();
            int nums[] = CPUtils.readIntArray(N, in);
            int distance = Integer.MAX_VALUE;
            for (int i = 0; i < nums.length; i++)
            {
                distance = Math.min(distance, getD(i, i + (nums.length - 1), nums, K));
            }
            out.print(distance);
        }

        private int getD(int start, int end, int nums[], int K)
        {
            end = end % nums.length;
            if (nums[end] < nums[start])
            {
                return (K - nums[start] + nums[end]);
            } else
            {
                return nums[end] - nums[start];
            }
        }

    }

    static class CPUtils
    {
        public static int[] readIntArray(int size, Scanner in)
        {
            int[] array = new int[size];
            for (int i = 0; i < size; i++)
            {
                array[i] = in.nextInt();
            }
            return array;
        }

    }
}

