
    Design a fraud detection algorithm that determines the number of possible transaction pattern sequences that could occur, where no more than 2 consecutive transactions can be assigned the same risk level category, given n consecutive transactions to analyze and k different risk level categories to assign. Each transaction must be assigned exactly one risk level category, and the algorithm should help identify unusual patterns that might indicate potential fraud.
    

    
def count_no_of_ways(n, k):
    """
    Design a fraud detection algorithm that determines the number of possible transaction pattern sequences that could occur, where no more than 2 consecutive transactions can be assigned the same risk level category, given n consecutive transactions to analyze and k different risk level categories to assign. Each transaction must be assigned exactly one risk level category, and the algorithm should help identify unusual patterns that might indicate potential fraud.
    

    """
def count_no_of_ways(n, k):
    """
    Design a fraud detection algorithm that determines the number of possible transaction pattern sequences that could occur, where no more than 2 consecutive transactions can be assigned the same risk level category, given n consecutive transactions to analyze and k different risk level categories to assign. Each transaction must be assigned exactly one risk level category, and the algorithm should help identify unusual patterns that might indicate potential fraud.
    

    """
    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]