F - Reparando postes

Languages: C, C++, Java, Pascal, Python, Tiger, JavaScript, Haskell, C#
Time & Memory limits: (details)

Después del paso del último huracán por nuestro país, muchos postes de electricidad fueron dañados por los vientos. Ahora es el momento de la recuperación. Para esto nuestra brigada tiene $M$ $(0 \leq M \leq 1000)$ postes nuevos, que se pondrán  en  el  lugar  que antes  ocupaban  los $N$ $(1 \leq N \leq 1000)$ postes de una de las avenidas principales. De los postes originales, se conoce el lugar donde estaba ubicado cada uno y además se sabe que dos de ellos no fueron dañados por lo que no necesitan cambios. Para lograr una buena distribución, se quiere que después de ubicados los nuevos postes en las posiciones de los antiguos, la mayor distancia entre dos postes consecutivos sea la menor posible.

Input

La entrada comienza con un entero $T$ $(1 \leq T \leq 250)$ que indica la cantidad de casos. Cada uno de estos empieza con cuatro enteros en una línea $N,M,P1,P2$ que representan el número de posiciones, la cantidad de postes nuevos y las posiciones de los dos postes que no necesitan ser cambiados. La siguiente línea contiene $N$ enteros separados por un espacio, que indican la posición de los postes originales, sin incluir los dos que no fueron dañados. Todas las posiciones son enteros entre $0$ y $10^{6}$.

Output

Por cada caso se debe imprimir una línea, con la menor distancia que se puede obtener entre los dos postes consecutivos más alejados.

Sample test(s)

Input
3 3 1 0 100 16 45 61 5 0 50 80 20 40 60 80 100 6 3 0 100 21 64 34 55 64 89
Output
55 30 34