```python
def live_count(neighbours: list) -> int:
    """
    Returns how many of a cell's given neighbours are alive.
    
    :param neighbours: List of booleans representing the state of each neighbour.
    :return: The count of alive neighbours.
    """
    return sum(neighbours)

def live_next(alive: bool, neighbours: list) -> bool:
    """
    Says whether the cell is alive in the next round based on its current state and the number of alive neighbours.
    
    :param alive: Boolean indicating if the cell is currently alive.
    :param neighbours: List of booleans representing the state of each neighbour.
    :return: True if the cell survives or comes alive, False otherwise.
    """
    live_neighbours = live_count(neighbours)
    return alive and (live_neighbours == 2 or live_neighbours == 3) or not alive and live_neighbours == 3
```