import java.util.*;

public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.run();
    }
    
    // 変数一覧
    long k;
    long n;
    ArrayList<Long> a = new ArrayList<Long>();

    public void run() {
        // 入力情報取得
        Scanner sc = new Scanner(System.in);
        k = sc.nextLong();
        n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            a.add(sc.nextLong());
        }
        sc.close();

        // 解答処理
        solve();
    }
    
    private void solve() {
        ArrayList<Long> res = new ArrayList<Long>();
        for (int i = 1; i <= a.size(); i++) {
            if (i == a.size()) {
                res.add((k - a.get(a.size() - 1)) + a.get(0));
            } else {
                res.add(a.get(i) - a.get(i-1));
            }
        }
        res.sort(Comparator.reverseOrder());
        System.out.println(k-res.get(0));
    }
} import java.util.*; util.* java public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.run();
    }
    
    // 変数一覧
    long k;
    long n;
    ArrayList<Long> a = new ArrayList<Long>();

    public void run() {
        // 入力情報取得
        Scanner sc = new Scanner(System.in);
        k = sc.nextLong();
        n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            a.add(sc.nextLong());
        }
        sc.close();

        // 解答処理
        solve();
    }
    
    private void solve() {
        ArrayList<Long> res = new ArrayList<Long>();
        for (int i = 1; i <= a.size(); i++) {
            if (i == a.size()) {
                res.add((k - a.get(a.size() - 1)) + a.get(0));
            } else {
                res.add(a.get(i) - a.get(i-1));
            }
        }
        res.sort(Comparator.reverseOrder());
        System.out.println(k-res.get(0));
    }
} Main // 変数一覧
    long k; k long n; n ArrayList<Long> a = new ArrayList<Long>(); a new ArrayList<Long>() public static void main(String[] args) {
        Main main = new Main();
        main.run();
    } main {
        Main main = new Main();
        main.run();
    } Main main = new Main(); main new Main() main.run() main.run main String[] args args public void run() {
        // 入力情報取得
        Scanner sc = new Scanner(System.in);
        k = sc.nextLong();
        n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            a.add(sc.nextLong());
        }
        sc.close();

        // 解答処理
        solve();
    } run {
        // 入力情報取得
        Scanner sc = new Scanner(System.in);
        k = sc.nextLong();
        n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            a.add(sc.nextLong());
        }
        sc.close();

        // 解答処理
        solve();
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) k = sc.nextLong() k sc.nextLong() sc.nextLong sc n = sc.nextInt() n sc.nextInt() sc.nextInt sc for (int i = 0; i < n; i++) {
            a.add(sc.nextLong());
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            a.add(sc.nextLong());
        } {
            a.add(sc.nextLong());
        } a.add(sc.nextLong()) a.add a sc.nextLong() sc.nextLong sc sc.close() sc.close sc solve() solve private void solve() {
        ArrayList<Long> res = new ArrayList<Long>();
        for (int i = 1; i <= a.size(); i++) {
            if (i == a.size()) {
                res.add((k - a.get(a.size() - 1)) + a.get(0));
            } else {
                res.add(a.get(i) - a.get(i-1));
            }
        }
        res.sort(Comparator.reverseOrder());
        System.out.println(k-res.get(0));
    } solve {
        ArrayList<Long> res = new ArrayList<Long>();
        for (int i = 1; i <= a.size(); i++) {
            if (i == a.size()) {
                res.add((k - a.get(a.size() - 1)) + a.get(0));
            } else {
                res.add(a.get(i) - a.get(i-1));
            }
        }
        res.sort(Comparator.reverseOrder());
        System.out.println(k-res.get(0));
    } ArrayList<Long> res = new ArrayList<Long>(); res new ArrayList<Long>() for (int i = 1; i <= a.size(); i++) {
            if (i == a.size()) {
                res.add((k - a.get(a.size() - 1)) + a.get(0));
            } else {
                res.add(a.get(i) - a.get(i-1));
            }
        } int i = 1; int i = 1; i 1 i <= a.size() i a.size() a.size a i++ i++ i {
            if (i == a.size()) {
                res.add((k - a.get(a.size() - 1)) + a.get(0));
            } else {
                res.add(a.get(i) - a.get(i-1));
            }
        } {
            if (i == a.size()) {
                res.add((k - a.get(a.size() - 1)) + a.get(0));
            } else {
                res.add(a.get(i) - a.get(i-1));
            }
        } if (i == a.size()) {
                res.add((k - a.get(a.size() - 1)) + a.get(0));
            } else {
                res.add(a.get(i) - a.get(i-1));
            } i == a.size() i a.size() a.size a {
                res.add((k - a.get(a.size() - 1)) + a.get(0));
            } res.add((k - a.get(a.size() - 1)) + a.get(0)) res.add res (k - a.get(a.size() - 1)) + a.get(0) (k - a.get(a.size() - 1)) k a.get(a.size() - 1) a.get a a.size() - 1 a.size() a.size a 1 a.get(0) a.get a 0 {
                res.add(a.get(i) - a.get(i-1));
            } res.add(a.get(i) - a.get(i-1)) res.add res a.get(i) - a.get(i-1) a.get(i) a.get a i a.get(i-1) a.get a i-1 i 1 res.sort(Comparator.reverseOrder()) res.sort res Comparator.reverseOrder() Comparator.reverseOrder Comparator System.out.println(k-res.get(0)) System.out.println System.out System System.out k-res.get(0) k res.get(0) res.get res 0 public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.run();
    }
    
    // 変数一覧
    long k;
    long n;
    ArrayList<Long> a = new ArrayList<Long>();

    public void run() {
        // 入力情報取得
        Scanner sc = new Scanner(System.in);
        k = sc.nextLong();
        n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            a.add(sc.nextLong());
        }
        sc.close();

        // 解答処理
        solve();
    }
    
    private void solve() {
        ArrayList<Long> res = new ArrayList<Long>();
        for (int i = 1; i <= a.size(); i++) {
            if (i == a.size()) {
                res.add((k - a.get(a.size() - 1)) + a.get(0));
            } else {
                res.add(a.get(i) - a.get(i-1));
            }
        }
        res.sort(Comparator.reverseOrder());
        System.out.println(k-res.get(0));
    }
} public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.run();
    }
    
    // 変数一覧
    long k;
    long n;
    ArrayList<Long> a = new ArrayList<Long>();

    public void run() {
        // 入力情報取得
        Scanner sc = new Scanner(System.in);
        k = sc.nextLong();
        n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            a.add(sc.nextLong());
        }
        sc.close();

        // 解答処理
        solve();
    }
    
    private void solve() {
        ArrayList<Long> res = new ArrayList<Long>();
        for (int i = 1; i <= a.size(); i++) {
            if (i == a.size()) {
                res.add((k - a.get(a.size() - 1)) + a.get(0));
            } else {
                res.add(a.get(i) - a.get(i-1));
            }
        }
        res.sort(Comparator.reverseOrder());
        System.out.println(k-res.get(0));
    }
} Main
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.run();
    }
    
    // 変数一覧
    long k;
    long n;
    ArrayList<Long> a = new ArrayList<Long>();

    public void run() {
        // 入力情報取得
        Scanner sc = new Scanner(System.in);
        k = sc.nextLong();
        n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            a.add(sc.nextLong());
        }
        sc.close();

        // 解答処理
        solve();
    }
    
    private void solve() {
        ArrayList<Long> res = new ArrayList<Long>();
        for (int i = 1; i <= a.size(); i++) {
            if (i == a.size()) {
                res.add((k - a.get(a.size() - 1)) + a.get(0));
            } else {
                res.add(a.get(i) - a.get(i-1));
            }
        }
        res.sort(Comparator.reverseOrder());
        System.out.println(k-res.get(0));
    }
}