The key idea is kind like divide and conquer (only twice though).

First, for every middle point `j`

, we split `nums`

into two subarray `nums[:j]`

and `nums[j+1:]`

. In the helper function `split`

, try to remove one element from the subarray, if the the sums of two remaining left and right sub-subarray are equal, we keep the `sum`

of sub-subarray in the set we return. Once we have any intersection between the two sets, we know we can make it.

Keep in mind `len(nums) > 6`

is a must since we need to split original array into four parts.

```
class Solution(object):
def splitArray(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
def split(A):
total = sum(A)
for i in range(1, len(A)): A[i] += A[i-1]
return {A[i-1] for i in range(1, len(A)-1) if A[i-1] == total - A[i]}
return len(nums) > 6 and any(split(nums[:j]) & split(nums[j+1:]) \
for j in range(3, len(nums)-3))
```