
    Design an algorithm to determine how many possible ways you can create a sequence of n assignments in a learning unit, where each assignment's difficulty level must be at least double the previous one and cannot exceed the maximum allowed difficulty level m. The sequence should help students progressively build their skills while ensuring manageable difficulty jumps between consecutive assignments.
    

    
def get_total_number_of_sequences(m, n):
    """
    Design an algorithm to determine how many possible ways you can create a sequence of n assignments in a learning unit, where each assignment's difficulty level must be at least double the previous one and cannot exceed the maximum allowed difficulty level m. The sequence should help students progressively build their skills while ensuring manageable difficulty jumps between consecutive assignments.
    

    """
def get_total_number_of_sequences(m, n):
    """
    Design an algorithm to determine how many possible ways you can create a sequence of n assignments in a learning unit, where each assignment's difficulty level must be at least double the previous one and cannot exceed the maximum allowed difficulty level m. The sequence should help students progressively build their skills while ensuring manageable difficulty jumps between consecutive assignments.
    

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