public Conference GreedyBestFitApproach(IEnumerable <Talk> talks)
        {
            talks = talks.OrderBy(talk => talk);

            Conference conference = new Conference(new TrackTwoSessionsFactory());

            foreach (Talk talk in talks)
            {
                Session bestSession = GetBestSessionBestFitApproach(conference.EnumerateSessions(), talk);

                if (bestSession == null)
                {
                    conference.CreateNewTrack();
                    bestSession = GetBestSessionBestFitApproach(conference.EnumerateSessions(), talk);
                }

                if (bestSession == null)
                {
                    throw new ArgumentException(string.Format("ErrorUnscheduledEvent", talk));
                }

                bestSession.AcceptTalk(talk);
            }
            return(conference);
        }