def is_limited_factor_number(x: int, allowed_factors: list) -> bool:
    if x < 1:
        return False  

    # Divide x by each allowed factor until it can no longer be divided
    for factor in allowed_factors:
        while x % factor == 0:
            x //= factor

    # If x is reduced to 1, it means it only had factors from the allowed list
    return x == 1

# Example usage with different sets of allowed factors
allowed_factors_1 = [2, 3, 5]
print(is_limited_factor_number(6, allowed_factors_1))   # Output: True (6 = 2 * 3)
print(is_limited_factor_number(1, allowed_factors_1))   # Output: True (1 has no prime factors)
print(is_limited_factor_number(14, allowed_factors_1))  # Output: False (14 includes prime factor 7)
print(is_limited_factor_number(30, allowed_factors_1))  # Output: True (30 = 2 * 3 * 5)
print(is_limited_factor_number(7, allowed_factors_1))   # Output: False (7 is a prime number)

# Example usage with an extended set of allowed factors
allowed_factors_2 = [2, 3, 5, 7]
print(is_limited_factor_number(42, allowed_factors_2))  # Output: True (42 = 2 * 3 * 7)
print(is_limited_factor_number(28, allowed_factors_2))  # Output: True (28 = 2 * 2 * 7)
print(is_limited_factor_number(15, allowed_factors_2))  # Output: True (15 = 3 * 5)
print(is_limited_factor_number(11, allowed_factors_2))  # Output: False (11 is a prime number not in the allowed set)