def gen_all_holds(hand):
    """
    Generate all possible choices of dice from hand to hold.

    hand: full yahtzee hand

    Returns a set of tuples, where each tuple is dice to hold
    """
    if (len(hand) == 0):
        return set([()])
    
    holds = set([()])
    
    for die in hand:
        for element in holds.copy():
            new_list = list(element)
            new_list.append(die)
            holds.add(tuple(new_list))
    
    return holds