public IEnumerable <PlayerNumber> NextMatchCandidates()
                {
                    var lastDefeatedRound = Rounds
                                            .OrderByDescending(it => it.Number)
                                            .Select(it => (Round?)it)
                                            .FirstOrDefault(it => it.Value.HasDefeateds);

                    var targetRounds     = Rounds.SkipWhile(it => it.Number <= (lastDefeatedRound?.Number ?? 0));
                    var alivedOthers     = AlivedOthers();
                    var recentRoundCount = 4 < alivedOthers.Count ? 4 : alivedOthers.Count - 1;
                    var recentRounds     = targetRounds.OrderByDescending(it => it.Number).Take(recentRoundCount);

                    return(alivedOthers.Except(recentRounds.Select(it => it.MatchedOther)));
                }