using System.Collections.Generic;
public static void Main()
var result = new List<Result>();
for (int a1 = 1; a1 <= 4; a1++)
for (int a2 = 1; a2 <= 4; a2++)
for (int a3 = 1; a3 <= 4; a3++)
for (int a4 = 1; a4 <= 4; a4++)
if (a1 != a2 && a1 != a3 && a1 != a4 && a2 != a3 && a2 != a4 && a3 != a4)
var dist = F1(Math.Abs(a1-1), hv) + F1(Math.Abs(a1-2), hv) + F1(Math.Abs(a2-2), hv) + F1(Math.Abs(a2-3), hv) + F1(Math.Abs(a3-3), hv) + F1(Math.Abs(a3-4), hv) + F1(Math.Abs(a4-4), hv) + F2(Math.Abs(a4-5), hv);
result.Add(new Result{a1=a1, a2=a2, a3=a3, a4=a4, dist=dist});
foreach (var r in result.OrderByDescending(r => r.dist))
Console.WriteLine(r.a1 + " " + r.a2 + " " + r.a3 + " " + r.a4 + ": " + r.dist);
static double F1(int dist, double hv)
return Math.Sqrt(1+dist*Math.Pow(hv, 2));
static double F2(int dist, double hv)
return Math.Sqrt(1.0/4+dist*Math.Pow(hv, 2));