// Arup Guha
// 5/26/2016
// Solution to 2016 January USACO Gold Problem: Angry Cows

import java.util.*;
import java.io.*;

public class angry {

	public static void main(String[] args) throws Exception {

		// Read in data.
		BufferedReader stdin = new BufferedReader(new FileReader("angry.in"));
		int n = Integer.parseInt(stdin.readLine().trim());
		long[] vals = new long[n];
		for (int i=0; i<n; i++)
			vals[i] = Long.parseLong(stdin.readLine().trim());

		// Sort the values and store the reverse list.
		Arrays.sort(vals);
		long[] rev = new long[n];
		for (int i=0; i<n; i++)
			rev[i] = vals[n-1-i];

		// Set up top level binary search on location to start the explosion.
		double low = vals[0], high = vals[n-1];
		double res = vals[n-1] - vals[0];
		while (high-low > .001) {

			// We try out location mid.
			double mid = (low+high)/2;

			// We get the minimum blast radii going to the left and right from this location.
			int lowIndex = getLowIndex(vals, mid);	
			double left = binSearch(vals, mid, lowIndex);
			double right = binSearch(rev, mid, n-2-lowIndex);

			// The larger of these is a valid solution.
			res = Math.min(Math.max(left,right), res);

			// We always want to move in the direction of the smaller blast.
			if (left < right) 
				low = mid;
			else
				high = mid;	

		}

		// This is dumb. I don't know how to print stuff to a file to a fixed number of decimal places.
		// I tried to learn but couldn't figure it out, so I did this, which is ridiculous.
		long newRes = (long)(100*res);
		long whole = (long)res;
		int tens = (int)(newRes%100 - newRes%10)/10;
		if (newRes%10 >= 5) tens++;
		if (tens == 10) {
			whole = whole+1;
			tens = 0;
		}

		// Write result.
		PrintWriter out = new PrintWriter(new FileWriter("angry.out"));
		out.println( (newRes/100)+"."+tens);
		out.close();
		stdin.close();
	}

	// Fast enough since this doesn't change our asymptotic run time. A binary search would have been better...
	public static int getLowIndex(long[] vals, double x) {
		int i = 0;	
		while (i < vals.length && vals[i] < x) i++;
		return i-1;
	}

	public static double binSearch(long[] arr, double value, int index) {
		
		double low=.5, high=Math.abs(arr[0]-value);

		
		// Search for the min blast radius that works from index down to 0.
		while (high-low>.001) {
			
			// Try blast radius mid, cur is the xVal where we start.
			double mid = (low+high)/2;
			double saveMid = mid, cur = value;
			int i = index;

			// Keep on going until we blast the last item.
			while (i > 0) {

				// Run this iteration of the blast.
				int j = i;
				while (j>=0 && Math.abs(arr[j]-cur) <= mid+1e-9) j--;
				if (j == i) break;

				// Update all necessary variables.
				i = j+1;
				mid = mid-1;
				cur = arr[i];
				i--;
			}

			// If i is 0, we made it...
			if (i <= 0) 
				high = saveMid;
			else 
				low = saveMid;
		}
		return high;
	}

}