import java.util.*;

public class Main {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int k = scan.nextInt();	//湖の円周（Kメートル）
        int n = scan.nextInt();	//家の数（N軒）
        int space = 0;
        int[] a;				//家の北側からの時計回りの距離(1, 2, 3...N)
        a = new int[n];

//		System.out.println("k="+k);
//		System.out.println("n="+n);
//		System.out.println("space="+space);

        for (int i=0; i<n; i++) {
        	a[i] = scan.nextInt();
        }

        space = (k-a[n-1])+a[0];		//家と家との間の距離
//		System.out.println("space="+space);

        for (int i=0; i<n-1; i++) {
 			if(space<(a[i+1]-a[i])) {
 				space = (a[i+1]-a[i]);
 			}       
        }
        
        // 全体（Kメートル）-（間が一番空いている距離）= （答え）
		System.out.println(k-space);
	    scan.close();	
    }
} import java.util.*; util.* java public class Main {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int k = scan.nextInt();	//湖の円周（Kメートル）
        int n = scan.nextInt();	//家の数（N軒）
        int space = 0;
        int[] a;				//家の北側からの時計回りの距離(1, 2, 3...N)
        a = new int[n];

//		System.out.println("k="+k);
//		System.out.println("n="+n);
//		System.out.println("space="+space);

        for (int i=0; i<n; i++) {
        	a[i] = scan.nextInt();
        }

        space = (k-a[n-1])+a[0];		//家と家との間の距離
//		System.out.println("space="+space);

        for (int i=0; i<n-1; i++) {
 			if(space<(a[i+1]-a[i])) {
 				space = (a[i+1]-a[i]);
 			}       
        }
        
        // 全体（Kメートル）-（間が一番空いている距離）= （答え）
		System.out.println(k-space);
	    scan.close();	
    }
} Main public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int k = scan.nextInt();	//湖の円周（Kメートル）
        int n = scan.nextInt();	//家の数（N軒）
        int space = 0;
        int[] a;				//家の北側からの時計回りの距離(1, 2, 3...N)
        a = new int[n];

//		System.out.println("k="+k);
//		System.out.println("n="+n);
//		System.out.println("space="+space);

        for (int i=0; i<n; i++) {
        	a[i] = scan.nextInt();
        }

        space = (k-a[n-1])+a[0];		//家と家との間の距離
//		System.out.println("space="+space);

        for (int i=0; i<n-1; i++) {
 			if(space<(a[i+1]-a[i])) {
 				space = (a[i+1]-a[i]);
 			}       
        }
        
        // 全体（Kメートル）-（間が一番空いている距離）= （答え）
		System.out.println(k-space);
	    scan.close();	
    } main {

        Scanner scan = new Scanner(System.in);
        int k = scan.nextInt();	//湖の円周（Kメートル）
        int n = scan.nextInt();	//家の数（N軒）
        int space = 0;
        int[] a;				//家の北側からの時計回りの距離(1, 2, 3...N)
        a = new int[n];

//		System.out.println("k="+k);
//		System.out.println("n="+n);
//		System.out.println("space="+space);

        for (int i=0; i<n; i++) {
        	a[i] = scan.nextInt();
        }

        space = (k-a[n-1])+a[0];		//家と家との間の距離
//		System.out.println("space="+space);

        for (int i=0; i<n-1; i++) {
 			if(space<(a[i+1]-a[i])) {
 				space = (a[i+1]-a[i]);
 			}       
        }
        
        // 全体（Kメートル）-（間が一番空いている距離）= （答え）
		System.out.println(k-space);
	    scan.close();	
    } Scanner scan = new Scanner(System.in); scan new Scanner(System.in) int k = scan.nextInt(); k scan.nextInt() scan.nextInt scan int n = scan.nextInt(); n scan.nextInt() scan.nextInt scan int space = 0; space 0 int[] a; a a = new int[n] a new int[n] n for (int i=0; i<n; i++) {
        	a[i] = scan.nextInt();
        } int i=0; int i=0; i 0 i<n i n i++ i++ i {
        	a[i] = scan.nextInt();
        } {
        	a[i] = scan.nextInt();
        } a[i] = scan.nextInt() a[i] a i scan.nextInt() scan.nextInt scan space = (k-a[n-1])+a[0] space (k-a[n-1])+a[0] (k-a[n-1]) k a[n-1] a n-1 n 1 a[0] a 0 for (int i=0; i<n-1; i++) {
 			if(space<(a[i+1]-a[i])) {
 				space = (a[i+1]-a[i]);
 			}       
        } int i=0; int i=0; i 0 i<n-1 i n-1 n 1 i++ i++ i {
 			if(space<(a[i+1]-a[i])) {
 				space = (a[i+1]-a[i]);
 			}       
        } {
 			if(space<(a[i+1]-a[i])) {
 				space = (a[i+1]-a[i]);
 			}       
        } if(space<(a[i+1]-a[i])) {
 				space = (a[i+1]-a[i]);
 			} space<(a[i+1]-a[i]) space (a[i+1]-a[i]) a[i+1] a i+1 i 1 a[i] a i {
 				space = (a[i+1]-a[i]);
 			} space = (a[i+1]-a[i]) space (a[i+1]-a[i]) a[i+1] a i+1 i 1 a[i] a i System.out.println(k-space) System.out.println System.out System System.out k-space k space scan.close() scan.close scan String[] args args public class Main {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int k = scan.nextInt();	//湖の円周（Kメートル）
        int n = scan.nextInt();	//家の数（N軒）
        int space = 0;
        int[] a;				//家の北側からの時計回りの距離(1, 2, 3...N)
        a = new int[n];

//		System.out.println("k="+k);
//		System.out.println("n="+n);
//		System.out.println("space="+space);

        for (int i=0; i<n; i++) {
        	a[i] = scan.nextInt();
        }

        space = (k-a[n-1])+a[0];		//家と家との間の距離
//		System.out.println("space="+space);

        for (int i=0; i<n-1; i++) {
 			if(space<(a[i+1]-a[i])) {
 				space = (a[i+1]-a[i]);
 			}       
        }
        
        // 全体（Kメートル）-（間が一番空いている距離）= （答え）
		System.out.println(k-space);
	    scan.close();	
    }
} public class Main {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int k = scan.nextInt();	//湖の円周（Kメートル）
        int n = scan.nextInt();	//家の数（N軒）
        int space = 0;
        int[] a;				//家の北側からの時計回りの距離(1, 2, 3...N)
        a = new int[n];

//		System.out.println("k="+k);
//		System.out.println("n="+n);
//		System.out.println("space="+space);

        for (int i=0; i<n; i++) {
        	a[i] = scan.nextInt();
        }

        space = (k-a[n-1])+a[0];		//家と家との間の距離
//		System.out.println("space="+space);

        for (int i=0; i<n-1; i++) {
 			if(space<(a[i+1]-a[i])) {
 				space = (a[i+1]-a[i]);
 			}       
        }
        
        // 全体（Kメートル）-（間が一番空いている距離）= （答え）
		System.out.println(k-space);
	    scan.close();	
    }
} Main
import java.util.*;

public class Main {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int k = scan.nextInt();	//湖の円周（Kメートル）
        int n = scan.nextInt();	//家の数（N軒）
        int space = 0;
        int[] a;				//家の北側からの時計回りの距離(1, 2, 3...N)
        a = new int[n];

//		System.out.println("k="+k);
//		System.out.println("n="+n);
//		System.out.println("space="+space);

        for (int i=0; i<n; i++) {
        	a[i] = scan.nextInt();
        }

        space = (k-a[n-1])+a[0];		//家と家との間の距離
//		System.out.println("space="+space);

        for (int i=0; i<n-1; i++) {
 			if(space<(a[i+1]-a[i])) {
 				space = (a[i+1]-a[i]);
 			}       
        }
        
        // 全体（Kメートル）-（間が一番空いている距離）= （答え）
		System.out.println(k-space);
	    scan.close();	
    }
}