#include <stdio.h>
#include <malloc.h>
int max(int a,int b){
int max;
if(a>=b){
max = a;
}
else{
max = b;
}
return max;
}
int min(int a,int b){
int min;
if(a<=b){
min = a;
}
else{
min = b;
}
return min;
}
int main(){
int n;
int *r;
int i;
scanf("%d",&n);
r=(int *)malloc(n * sizeof(int));
for(i=0;i<n;i++){
scanf("%d",&r[i]);
}
int maxv=-2000000000;//可能minv=10^9,r[i]若取0,则r[i]-minv=-10^9,不可能比maxv=0大
int minv=r[0];
for(i=1;i<n;i++){
maxv=max(maxv,r[i]-minv);//错过了max就回不去了
minv=min(minv,r[i]);
}
printf("%d\n",maxv);
return 0;
}