def seconds_to_human(seconds, *, unit=None):
    """
    Convert number in seconds to human format.

    Arguments:
        seconds      (int): Number of seconds

    Keyword arguments (opt):
        unit         (Months/Days/Hours/Minutes/Seconds):
                            Max unit used to convert

    Example:
    >>> seconds_to_human(300)
    '5 Minutes'
    >>> seconds_to_human(310)
    '5 Minutes, 10 Seconds'
    >>> seconds_to_human(10810)
    '3 Hours, 10 Seconds'
    >>> seconds_to_human(10810, unit='Minutes')
    '180 Minutes, 10 Seconds'
    >>> seconds_to_human(180072)
    '2 Days, 2 Hours, 1 Minutes, 12 Seconds'
    >>> seconds_to_human(5191272)
    '2 Months, 2 Hours, 1 Minutes, 12 Seconds'
    """
    # 1 year = 365 days (60 * 60 * 24 * 365)
    # 1 month = 30 days (60 * 60 * 24 * 30)
    # 1 day    (60 * 60 * 24)
    # 1 hour   (60 * 60)
    # 1 minute (60)
    # 1 second
    seconds_list = [
        ("Years", 31536000),
        ("Months", 2592000),
        ("Days", 86400),
        ("Hours", 3600),
        ("Minutes", 60),
        ("Seconds", 1),
    ]

    if not isinstance(seconds, int):
        raise TypeError("seconds must be int")

    if seconds == 0:
        return "0 Seconds"
    elif seconds < 0:
        raise TypeError("error: seconds_to_human: seconds must be greater than 0")

    # If unit is specified, fix seconds_list to contain only
    # granularity required and lower
    if unit:
        try:
            index = [a for a, b in enumerate(seconds_list) if b[0] == unit][0]
        except IndexError:
            raise TypeError("error: seconds_to_human: unit is invalid")
        seconds_list = seconds_list[index:]

    result = []
    # Loop over seconds_list
    for unit_name, unit_value_in_sec in seconds_list:
        # Check if the seconds can be divided by seconds in that granularity
        num_unit = seconds // unit_value_in_sec
        # If division would occur, decrease number of seconds and store
        # number of granularity and the granularity name in the result
        if num_unit:
            seconds -= num_unit * unit_value_in_sec
            result.append("{} {}".format(num_unit, unit_name))
    return ", ".join(result)