Python 3 + Explanation
Lets call a strip of the cake either a vertical or horizontal length that is created by cutting the cake.\n\t For instance, if we have vertical cuts [1, 4] and 
* Lets call a *strip* of the cake either a vertical or horizontal length that is created by cutting the cake.\n\t* For instance, if we have vertical cuts `[1, 4]` and the cake is of width `6`, then we have three strips (denoted as a tuple with a start and end): `[(0, 1), (1, 4), (4, 6)]`.\n* The maximum area will always be the maximum width between two cuts multiplied by the maximum height between two cuts.\n\t* **Why:** Suppose we find the strip with the maximum height first, because this horizontal strip will have **every** vertical strip intersecting it, we just need to find the vertical strip with the maximum width.\n* We can therefore sort the `horizontalCuts` and `verticalCuts` and prefix 0 and `h` and `w` respectively to form an array of strips.\n\t* For each strip, we calculate either the height or width (depending on whether they\'re vertical or horizontal strips) and take the maximum.\n* Remember to modulo the answer by `(10 ** 9) + 7`!\n```\nclass Solution:\n    def maxArea(self, h: int, w: int, horizontalCuts: List[int], verticalCuts: List[int]) -> int:\n        horizontalStrips = [0] + sorted(horizontalCuts) + [h]\n        verticalStrips = [0] + sorted(verticalCuts) + [w]\n        \n        maxStripWidth = max([horizontalStrips[i + 1] - horizontalStrips[i] for i in range(len(horizontalStrips) - 1)])\n        maxStripHeight = max([verticalStrips[i + 1] - verticalStrips[i] for i in range(len(verticalStrips) - 1)])\n        \n        return (maxStripWidth * maxStripHeight) % ((10 ** 9) + 7)\n```
[]