
    Design an algorithm to determine how many possible learning paths exist for a student, where each path consists of n progressive stages and the difficulty level of each stage must be at least double the previous stage's difficulty but cannot exceed the maximum allowed difficulty level m. Each stage's difficulty level must be a positive integer, representing increasing cognitive challenges that align with the student's learning progression.
    

    
def get_total_number_of_sequences(m, n):
    """
    Design an algorithm to determine how many possible learning paths exist for a student, where each path consists of n progressive stages and the difficulty level of each stage must be at least double the previous stage's difficulty but cannot exceed the maximum allowed difficulty level m. Each stage's difficulty level must be a positive integer, representing increasing cognitive challenges that align with the student's learning progression.
    

    """
def get_total_number_of_sequences(m, n):
    """
    Design an algorithm to determine how many possible learning paths exist for a student, where each path consists of n progressive stages and the difficulty level of each stage must be at least double the previous stage's difficulty but cannot exceed the maximum allowed difficulty level m. Each stage's difficulty level must be a positive integer, representing increasing cognitive challenges that align with the student's learning progression.
    

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