
    Design an algorithm to determine the number of valid learning paths through an adaptive educational program containing n stages, where each stage's difficulty level must be at least double the previous stage's level and cannot exceed the maximum difficulty rating m. The system needs to calculate all possible progression sequences that maintain this doubling difficulty requirement while staying within the maximum difficulty threshold, helping educators understand the range of viable learning paths available to students.
    

    
def get_total_number_of_sequences(m, n):
    """
    Design an algorithm to determine the number of valid learning paths through an adaptive educational program containing n stages, where each stage's difficulty level must be at least double the previous stage's level and cannot exceed the maximum difficulty rating m. The system needs to calculate all possible progression sequences that maintain this doubling difficulty requirement while staying within the maximum difficulty threshold, helping educators understand the range of viable learning paths available to students.
    

    """
def get_total_number_of_sequences(m, n):
    """
    Design an algorithm to determine the number of valid learning paths through an adaptive educational program containing n stages, where each stage's difficulty level must be at least double the previous stage's level and cannot exceed the maximum difficulty rating m. The system needs to calculate all possible progression sequences that maintain this doubling difficulty requirement while staying within the maximum difficulty threshold, helping educators understand the range of viable learning paths available to students.
    

    """
    T = [[0 for i in range(n + 1)] for i in range(m + 1)]
    for i in range(m + 1):
        for j in range(n + 1):
            if i == 0 or j == 0:
                T[i][j] = 0
            elif i < j:
                T[i][j] = 0
            elif j == 1:
                T[i][j] = i
            else:
                T[i][j] = T[i - 1][j] + T[i // 2][j - 1]
    return T[m][n]