#include<bits/stdc++.h>
using namespace std;
int a[100005];
int stmin[100005][21],mimin[100005][21];
int stmax[100005][21],mimax[100005][21];
int lg[100005];
int n;
void initial()
{
memset(stmin,0x3f,sizeof(stmin));
memset(stmax,0x3f,sizeof(stmax));
for(int i = 1;i <= n;i ++)
{
stmin[i][0] = stmax[i][0] = a[i];
mimax[i][0] = mimin[i][0] = i;
}
for(int i = 2;i <= n;i ++)
{
lg[i] = lg[i / 2] + 1;
}
for(int len = 1;len <= lg[n];len ++)
{
for(int i = 1;i - 1 + (1 << len) <= n;i ++)
{
stmin[i][len] = min(stmin[i][len - 1],stmin[i + (1 << len - 1)][len - 1]);
if(stmin[i][len - 1] <= stmin[i + (1 << len - 1)][len - 1])
{
mimin[i][len] = mimin[i][len - 1];
}
else
{
mimin[i][len] = mimin[i + (1 << len - 1)][len - 1];
}
}
}
for(int len = 1;len <= lg[n];len ++)
{
for(int i = 1;i - 1 + (1 << len) <= n;i ++)
{
stmax[i][len] = max(stmax[i][len - 1],stmax[i + (1 << len - 1)][len - 1]);
if(stmax[i][len - 1] <= stmax[i + (1 << len - 1)][len - 1])
{
mimax[i][len] = mimax[i][len - 1];
}
else
{
mimax[i][len] = mimax[i + (1 << len - 1)][len - 1];
}
}
}
}
int intervalmaxid(int l,int r)
{
if(stmax[l][lg[r - l + 1]] <= stmax[r - (1 << (lg[r - l + 1])) + 1][lg[r - l + 1]])
{
return mimax[l][lg[r - l + 1]];
}
else
{
return mimax[r - (1 << (lg[r - l + 1])) + 1][lg[r - l + 1]];
}
}
int intervalminid(int l,int r)
{
if(stmin[l][lg[r - l + 1]] <= stmin[r - (1 << (lg[r - l + 1])) + 1][lg[r - l + 1]])
{
return mimin[l][lg[r - l + 1]];
}
else
{
return mimin[r - (1 << (lg[r - l + 1])) + 1][lg[r - l + 1]];
}
}
int main()
{
cin>>n;
for(int i = 1;i <= n;i ++)
{
cin>>a[i];
}
initial();
int maxpos = intervalmaxid(1,n);
int minpos = intervalminid(1,n);
cout<<a[maxpos] - a[minpos];
return 0;
}