Least Runtime Solution
\nclass FrontMiddleBackQueue:\n\n    def __init__(self):\n        self.Queue=[]       \n\n    def pushFront(self, val: int) -> None:\n        self.Queue.insert(
```\nclass FrontMiddleBackQueue:\n\n    def __init__(self):\n        self.Queue=[]       \n\n    def pushFront(self, val: int) -> None:\n        self.Queue.insert(0,val)\n\n    def pushMiddle(self, val: int) -> None:\n        self.Queue.insert(len(self.Queue)//2,val)\n\n    def pushBack(self, val: int) -> None:\n        self.Queue.append(val)      \n\n    def popFront(self) -> int:\n        if len(self.Queue)==0:\n            return -1\n        return self.Queue.pop(0)        \n\n    def popMiddle(self) -> int:\n        if len(self.Queue)==0:\n            return -1        \n        return self.Queue.pop((len(self.Queue)-1)//2)                \n\n    def popBack(self) -> int:\n        if len(self.Queue)==0:\n            return -1\n        return self.Queue.pop()\n        \n\n\n# Your FrontMiddleBackQueue object will be instantiated and called as such:\n# obj = FrontMiddleBackQueue()\n# obj.pushFront(val)\n# obj.pushMiddle(val)\n# obj.pushBack(val)\n# param_4 = obj.popFront()\n# param_5 = obj.popMiddle()\n# param_6 = obj.popBack()\n```
['Queue']