public Run(Run[] runs) { //This constructor takes array of runs and merges it into one output run List<int> cream = new List<int>(runs.Count()); int empty_runs = 0; for (int i = 0; i < runs.Count(); i++){ if ((object)runs[i] is Fake_Run || runs[i] == null) empty_runs++; cream.Add(runs[i].Dequeue()); } while (empty_runs != runs.Count()){ int Imin = cream.IndexOf(cream.Min()); Values.Enqueue(cream[Imin]); if (!runs[Imin].IsEmpty) cream[Imin] = runs[Imin].Dequeue(); else{ cream[Imin] = 999999999; empty_runs++; } } }