from typing import List


def rollStack(dataStack: List[int], numberOfRolls: int, insertIndex: int) -> List[int]:
    """
    Rolls the stack recursively, and inverted when negative number of rolls
    :param dataStack: Input stack
    :param numberOfRolls: Number of rolls
    :param insertIndex: At which index to either insert new values, or to get values from
    :return: Rolled data stack
    """
    newStack = dataStack.copy()
    if numberOfRolls > 0:
        newStack.insert(insertIndex, newStack.pop())
        return rollStack(newStack, numberOfRolls - 1, insertIndex)
    elif numberOfRolls < 0:
        newStack.append(newStack.pop(insertIndex))
        return rollStack(newStack, numberOfRolls + 1, insertIndex)
    else:
        return newStack