import java.util.*;

public class Main {
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int R0=sc.nextInt();
		int M=R0;
		int m=R0;
		int M2=R0;
		int Mn=0;
		int mn=0;
		int M2n=0;
		int R=sc.nextInt();
		if(m>R){
			m=R;
			mn=1;
		}
		if(M<=R){
			M=R;
			Mn=1;
		}
		int d=R-R0;
		for(int i=2;i<n;i++){
			R=sc.nextInt();
			if(mn<=Mn){
				if(m>R){
					m=R;
					mn=i;
				}
				if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}
			}else{
				if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				}
			}
		}
		System.out.println(d);
	}
} import java.util.*; util.* java public class Main {
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int R0=sc.nextInt();
		int M=R0;
		int m=R0;
		int M2=R0;
		int Mn=0;
		int mn=0;
		int M2n=0;
		int R=sc.nextInt();
		if(m>R){
			m=R;
			mn=1;
		}
		if(M<=R){
			M=R;
			Mn=1;
		}
		int d=R-R0;
		for(int i=2;i<n;i++){
			R=sc.nextInt();
			if(mn<=Mn){
				if(m>R){
					m=R;
					mn=i;
				}
				if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}
			}else{
				if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				}
			}
		}
		System.out.println(d);
	}
} Main public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int R0=sc.nextInt();
		int M=R0;
		int m=R0;
		int M2=R0;
		int Mn=0;
		int mn=0;
		int M2n=0;
		int R=sc.nextInt();
		if(m>R){
			m=R;
			mn=1;
		}
		if(M<=R){
			M=R;
			Mn=1;
		}
		int d=R-R0;
		for(int i=2;i<n;i++){
			R=sc.nextInt();
			if(mn<=Mn){
				if(m>R){
					m=R;
					mn=i;
				}
				if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}
			}else{
				if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				}
			}
		}
		System.out.println(d);
	} main {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int R0=sc.nextInt();
		int M=R0;
		int m=R0;
		int M2=R0;
		int Mn=0;
		int mn=0;
		int M2n=0;
		int R=sc.nextInt();
		if(m>R){
			m=R;
			mn=1;
		}
		if(M<=R){
			M=R;
			Mn=1;
		}
		int d=R-R0;
		for(int i=2;i<n;i++){
			R=sc.nextInt();
			if(mn<=Mn){
				if(m>R){
					m=R;
					mn=i;
				}
				if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}
			}else{
				if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				}
			}
		}
		System.out.println(d);
	} Scanner sc=new Scanner(System.in); sc new Scanner(System.in) int n=sc.nextInt(); n sc.nextInt() sc.nextInt sc int R0=sc.nextInt(); R0 sc.nextInt() sc.nextInt sc int M=R0; M R0 int m=R0; m R0 int M2=R0; M2 R0 int Mn=0; Mn 0 int mn=0; mn 0 int M2n=0; M2n 0 int R=sc.nextInt(); R sc.nextInt() sc.nextInt sc if(m>R){
			m=R;
			mn=1;
		} m>R m R {
			m=R;
			mn=1;
		} m=R m R mn=1 mn 1 if(M<=R){
			M=R;
			Mn=1;
		} M<=R M R {
			M=R;
			Mn=1;
		} M=R M R Mn=1 Mn 1 int d=R-R0; d R-R0 R R0 for(int i=2;i<n;i++){
			R=sc.nextInt();
			if(mn<=Mn){
				if(m>R){
					m=R;
					mn=i;
				}
				if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}
			}else{
				if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				}
			}
		} int i=2; int i=2; i 2 i<n i n i++ i++ i {
			R=sc.nextInt();
			if(mn<=Mn){
				if(m>R){
					m=R;
					mn=i;
				}
				if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}
			}else{
				if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				}
			}
		} {
			R=sc.nextInt();
			if(mn<=Mn){
				if(m>R){
					m=R;
					mn=i;
				}
				if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}
			}else{
				if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				}
			}
		} R=sc.nextInt() R sc.nextInt() sc.nextInt sc if(mn<=Mn){
				if(m>R){
					m=R;
					mn=i;
				}
				if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}
			}else{
				if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				}
			} mn<=Mn mn Mn {
				if(m>R){
					m=R;
					mn=i;
				}
				if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}
			} if(m>R){
					m=R;
					mn=i;
				} m>R m R {
					m=R;
					mn=i;
				} m=R m R mn=i mn i if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				} M<=R M R {
					M=R;
					Mn=i;
					d=M-m;
				} M=R M R Mn=i Mn i d=M-m d M-m M m {
				if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				}
			} if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				} m>R m R {
					m=R;
					mn=i;
				} m=R m R mn=i mn i if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				} M<=R M R {
					M=R;
					Mn=i;
					d=M-m;
				} M=R M R Mn=i Mn i d=M-m d M-m M m if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				} M2<R||M2n<mn M2<R M2 R M2n<mn M2n mn {
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				} M2=R M2 R M2n=i M2n i if(d<R-m){
						d=R-m;
					} d<R-m d R-m R m {
						d=R-m;
					} d=R-m d R-m R m System.out.println(d) System.out.println System.out System System.out d String[] args args public class Main {
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int R0=sc.nextInt();
		int M=R0;
		int m=R0;
		int M2=R0;
		int Mn=0;
		int mn=0;
		int M2n=0;
		int R=sc.nextInt();
		if(m>R){
			m=R;
			mn=1;
		}
		if(M<=R){
			M=R;
			Mn=1;
		}
		int d=R-R0;
		for(int i=2;i<n;i++){
			R=sc.nextInt();
			if(mn<=Mn){
				if(m>R){
					m=R;
					mn=i;
				}
				if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}
			}else{
				if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				}
			}
		}
		System.out.println(d);
	}
} public class Main {
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int R0=sc.nextInt();
		int M=R0;
		int m=R0;
		int M2=R0;
		int Mn=0;
		int mn=0;
		int M2n=0;
		int R=sc.nextInt();
		if(m>R){
			m=R;
			mn=1;
		}
		if(M<=R){
			M=R;
			Mn=1;
		}
		int d=R-R0;
		for(int i=2;i<n;i++){
			R=sc.nextInt();
			if(mn<=Mn){
				if(m>R){
					m=R;
					mn=i;
				}
				if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}
			}else{
				if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				}
			}
		}
		System.out.println(d);
	}
} Main
import java.util.*;

public class Main {
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int R0=sc.nextInt();
		int M=R0;
		int m=R0;
		int M2=R0;
		int Mn=0;
		int mn=0;
		int M2n=0;
		int R=sc.nextInt();
		if(m>R){
			m=R;
			mn=1;
		}
		if(M<=R){
			M=R;
			Mn=1;
		}
		int d=R-R0;
		for(int i=2;i<n;i++){
			R=sc.nextInt();
			if(mn<=Mn){
				if(m>R){
					m=R;
					mn=i;
				}
				if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}
			}else{
				if(m>R){
					m=R;
					mn=i;
				}else if(M<=R){
					M=R;
					Mn=i;
					d=M-m;
				}else if(M2<R||M2n<mn){
					M2=R;
					M2n=i;
					if(d<R-m){
						d=R-m;
					}
				}
			}
		}
		System.out.println(d);
	}
}