public static int Main() { var links = new HashSet <(long p1, long p2)>(); var primeSet = new HashSet <long>(PrimeUtils.FilePrimes); foreach (var prime in PrimeUtils.FilePrimes) { links.UnionWith(GetLinks(prime, primeSet)); } var currPrime = primeSet.Max(); for (var i = 0; i < 1000000; i++) { currPrime = PrimeUtils.NextPrimeBasic(currPrime); links.UnionWith(GetLinks(currPrime, primeSet)); primeSet.Add(currPrime); } links = new HashSet <(long p1, long p2)>(CompressLinks(links)); var conn4 = ConnectedSignatures4(links).OrderBy(x => x.Item1 + x.Item2 + x.Item3 + x.Item4).ToArray(); var conn5 = ConnectedSignatures5(links, conn4).OrderBy(x => x.Item1 + x.Item2 + x.Item3 + x.Item4 + x.Item5).ToArray(); return(0); }