import java.io.*; import java.util.*; public class motorway_mb { public static void main(String[] args) throws IOException { Input in = new Input(); int n = in.nextInt(); int[] s = new int[n]; for (int i = 0; i < n; ++i) { s[i] = in.nextInt(); } int[] suffixMax = new int[n]; for (int i = n - 2; i >= 0; --i) { suffixMax[i] = Math.max(suffixMax[i + 1], s[i + 1] - s[i]); } int answer = Integer.MAX_VALUE; int prefixMax = 0; for (int i = 1; i + 1 < n; ++i) { answer = Math.min(answer, Math.max(s[i + 1] - s[i - 1], Math.max(prefixMax, suffixMax[i + 1]))); prefixMax = Math.max(prefixMax, s[i] - s[i - 1]); } System.out.println(answer); } private static class Input { byte[] buf = new byte[2048]; int curr, size; char next() throws IOException { if (curr == size) { curr = 0; size = System.in.read(buf); } char rv = (char) buf[curr]; ++curr; return rv; } int nextInt() throws IOException { char ch; while ((ch = next()) <= ' '); int rv = ch - '0'; while ((ch = next()) > ' ') { rv = 10 * rv + (ch - '0'); } return rv; } } }