
    Design a fraud detection algorithm that determines the number of possible ways to classify a sequence of n consecutive transactions into k risk levels, where no more than 2 consecutive transactions can be assigned the same risk classification. This pattern detection helps identify potential fraudulent transaction sequences by ensuring risk level variations across consecutive transactions while maintaining the bank's transaction monitoring rules.
    

    
def count_no_of_ways(n, k):
    """
    Design a fraud detection algorithm that determines the number of possible ways to classify a sequence of n consecutive transactions into k risk levels, where no more than 2 consecutive transactions can be assigned the same risk classification. This pattern detection helps identify potential fraudulent transaction sequences by ensuring risk level variations across consecutive transactions while maintaining the bank's transaction monitoring rules.
    

    """
def count_no_of_ways(n, k):
    """
    Design a fraud detection algorithm that determines the number of possible ways to classify a sequence of n consecutive transactions into k risk levels, where no more than 2 consecutive transactions can be assigned the same risk classification. This pattern detection helps identify potential fraudulent transaction sequences by ensuring risk level variations across consecutive transactions while maintaining the bank's transaction monitoring rules.
    

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