using System.Collections.Generic;
using System.Diagnostics;
var numbers = Enumerable.Range(0, 500).Select(_ => rnd.Next(2,10000)).ToArray();
Console.WriteLine($"[{string.Join(", ",numbers)}]");
var sw = new Stopwatch();
var filtered = numbers.Where(x => !IsSumOf(x, numbers.TakeWhile(n => n < x).OrderDescending().ToList()));
Console.WriteLine($"Filtered [{string.Join(", ",filtered)}]");
Console.WriteLine($"Performed {complexity} IsSumOf calls in {sw.ElapsedMilliseconds} ms");
bool IsSumOf(int x, IEnumerable<int> numbers)
if (!numbers.Any()) return false;
if (mod == 0) return true;
for (var i = x / h; i>= 0; i--)
if (IsSumOf(x - i * h, t)) return true;