
    Determine the number of valid pricing schedules for a parking zone where each time slot must be assigned one of the available price tiers, with the constraint that no more than two consecutive time slots can have the same price tier to prevent extended periods of static pricing. Given n time slots throughout the day and k different price tiers, calculate how many different ways the pricing schedule can be arranged while maintaining this constraint.
    

    
def count_no_of_ways(n, k):
    """
    Determine the number of valid pricing schedules for a parking zone where each time slot must be assigned one of the available price tiers, with the constraint that no more than two consecutive time slots can have the same price tier to prevent extended periods of static pricing. Given n time slots throughout the day and k different price tiers, calculate how many different ways the pricing schedule can be arranged while maintaining this constraint.
    

    """
def count_no_of_ways(n, k):
    """
    Determine the number of valid pricing schedules for a parking zone where each time slot must be assigned one of the available price tiers, with the constraint that no more than two consecutive time slots can have the same price tier to prevent extended periods of static pricing. Given n time slots throughout the day and k different price tiers, calculate how many different ways the pricing schedule can be arranged while maintaining this constraint.
    

    """
    dp = [0] * (n + 1)
    total = k
    mod = 1000000007
    dp[1] = k
    dp[2] = k * k
    for i in range(3, n + 1):
        dp[i] = (k - 1) * (dp[i - 1] + dp[i - 2]) % mod
    return dp[n]