using System.Collections.Generic;
public static void Main()
var list = Enumerable.Range(0,24)
var eq24 = SubSetsOf(list).Where(x=> x.Sum() == 24).ToList();
Console.WriteLine(eq24.Count);
foreach(var item in eq24)
Console.WriteLine(string.Join(", ", item));
public static IEnumerable<IEnumerable<T>> SubSetsOf<T>(IEnumerable<T> source)
return Enumerable.Repeat(Enumerable.Empty<T>(), 1);
var element = source.Take(1);
var haveNots = SubSetsOf(source.Skip(1));
var haves = haveNots.Select(set => element.Concat(set));
return haves.Concat(haveNots);