
    Design an algorithm to determine the number of possible student risk assessment patterns across n checkpoints throughout the academic year, where each checkpoint can be assigned one of k risk levels, with the constraint that no more than two consecutive checkpoints can show the same risk level to ensure detection of significant changes in student performance. The goal is to identify valid sequences of risk assessments that could help in early intervention for potential dropouts.
    

    
def count_no_of_ways(n, k):
    """
    Design an algorithm to determine the number of possible student risk assessment patterns across n checkpoints throughout the academic year, where each checkpoint can be assigned one of k risk levels, with the constraint that no more than two consecutive checkpoints can show the same risk level to ensure detection of significant changes in student performance. The goal is to identify valid sequences of risk assessments that could help in early intervention for potential dropouts.
    

    """
def count_no_of_ways(n, k):
    """
    Design an algorithm to determine the number of possible student risk assessment patterns across n checkpoints throughout the academic year, where each checkpoint can be assigned one of k risk levels, with the constraint that no more than two consecutive checkpoints can show the same risk level to ensure detection of significant changes in student performance. The goal is to identify valid sequences of risk assessments that could help in early intervention for potential dropouts.
    

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