class Queue:
    def __init__(self):
        self._sll = SingleLinkedList()

    def enqueue(self, value):
        node = Node(value)
        self._sll.append(node)

    def dequeue(self):
        if self._sll.isEmpty():
            raise Exception("Empty Queue")
        v = self._sll.head
        self._sll.head = self._sll.head.next

        return v.value
class Stack:
    def __init__(self):
        self._sll = SingleLinkedList()

    def push(self, value):
        node = Node(value)
        self._sll.insert(node, pos=0)

    def pop(self):
        if self._sll.isEmpty():
            raise Exception("Empty Stack")

        node = self._sll.head
        self._sll.head = self._sll.head.next
        return node.value