from typing import List
import math


def fizzbuzz(n: int) -> List[str]:
    """Conunts and reterns N FizzBuzz numbers. The first number is "1", and the players
    then count upwards in turn. However, any number divisible by three is replaced by
    the word fizz and any number divisible by five by the word buzz. Numbers divisible
    by 15 become fizz buzz.

    Examples:
        >>> fizzbuzz(5)
        ["1", "2", "fizz", "4", "buzz"]

        >>> fizzbuzz(0)
        Traceback (most recent call last):
        ...
        raise ValueError("n must be >= 1")
        ValueError: n must be >= 1

        >>> fizzbuzz(1.2)
        Traceback (most recent call last):
        raise ValueError("n must be exact integer")
        ValueError: n must be exact integer

    Args:
        n: this number means the last number of Fizzbuzz sequence.

    Returns:
        N FizzBuzz numbers.

    """
    if not n >= 1:
        raise ValueError("n must be >= 1")
    if math.floor(n) != n:
        raise ValueError("n must be exact integer")
    result = []
    for number in range(1, n + 1):
        if number % 3 == 0:
            result.append("fizz")
        elif number % 5 == 0:
            result.append("buzz")
        elif number % 15 == 0:
            result.append("fizz buzz")
        else:
            result.append(str(number))
    return result