using System;
class Myclass{
static int max(int a, int b)
{
if(a>b)
return a;
else
return b;
}
static void Main(string[] args)
{
string test = Console.ReadLine().Trim();
long n= Int64.Parse(test);
int [] arr = new int[n];
string s= Console.ReadLine();
string [] words = s.Split(' ');
//Console.WriteLine(s);
int i=0;
foreach(string word in words)
{
arr[i]= Convert.ToInt32(word);
i++;
}
Array.Sort(arr);
//for( i=0;i<n;i++)
//Console.WriteLine(arr[i]);
int ans= max(arr[1]-arr[0],arr[2]-arr[0]);
ans = max(ans,max(arr[n-1]-arr[n-2],arr[n-1]-arr[n-3]));
for(i=1;i<n-2;i++)
{
ans = max(ans,(arr[i+2]-arr[i]));
}
Console.WriteLine(ans);
}
}
dXNpbmcgU3lzdGVtOwpjbGFzcyBNeWNsYXNzewoJc3RhdGljIGludCBtYXgoaW50IGEsIGludCBiKQoJewoJCWlmKGE+YikKCQkgcmV0dXJuIGE7CgkJZWxzZQoJCSByZXR1cm4gYjsKCX0KIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKIHsKIAlzdHJpbmcgdGVzdCA9IENvbnNvbGUuUmVhZExpbmUoKS5UcmltKCk7CiAJbG9uZyBuPSBJbnQ2NC5QYXJzZSh0ZXN0KTsKIAlpbnQgW10gYXJyID0gbmV3IGludFtuXTsKIAlzdHJpbmcgcz0gQ29uc29sZS5SZWFkTGluZSgpOwogCXN0cmluZyBbXSB3b3JkcyA9IHMuU3BsaXQoJyAnKTsKIAkvL0NvbnNvbGUuV3JpdGVMaW5lKHMpOwogCWludCBpPTA7CiAJZm9yZWFjaChzdHJpbmcgd29yZCBpbiB3b3JkcykKIAl7CiAJCWFycltpXT0gQ29udmVydC5Ub0ludDMyKHdvcmQpOwogCQlpKys7CiAJfQogCUFycmF5LlNvcnQoYXJyKTsKIAkvL2ZvciggaT0wO2k8bjtpKyspCiAJIC8vQ29uc29sZS5Xcml0ZUxpbmUoYXJyW2ldKTsKIAkgaW50IGFucz0gbWF4KGFyclsxXS1hcnJbMF0sYXJyWzJdLWFyclswXSk7CiAJIGFucyA9IG1heChhbnMsbWF4KGFycltuLTFdLWFycltuLTJdLGFycltuLTFdLWFycltuLTNdKSk7CiAJIGZvcihpPTE7aTxuLTI7aSsrKQogCSB7CiAJIAlhbnMgPSBtYXgoYW5zLChhcnJbaSsyXS1hcnJbaV0pKTsKIAkgfQogCSBDb25zb2xlLldyaXRlTGluZShhbnMpOwogCSAKIH0KfQ==