<p>You are given an integer array&nbsp;<code>nums</code>. You can choose <strong>exactly one</strong> index (<strong>0-indexed</strong>) and remove the element. Notice that the index of the elements may change after the removal.</p>

<p>For example, if <code>nums = [6,1,7,4,1]</code>:</p>

<ul>
	<li>Choosing to remove index <code>1</code> results in <code>nums = [6,7,4,1]</code>.</li>
	<li>Choosing to remove index <code>2</code> results in <code>nums = [6,1,4,1]</code>.</li>
	<li>Choosing to remove index <code>4</code> results in <code>nums = [6,1,7,4]</code>.</li>
</ul>

<p>An array is <strong>fair</strong> if the sum of the odd-indexed values equals the sum of the even-indexed values.</p>

<p>Return the <em><strong>number</strong> of indices that you could choose such that after the removal, </em><code>nums</code><em> </em><em>is <strong>fair</strong>. </em></p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> nums = [2,1,6,4]
<strong>Output:</strong> 1
<strong>Explanation:</strong>
Remove index 0: [1,6,4] -&gt; Even sum: 1 + 4 = 5. Odd sum: 6. Not fair.
Remove index 1: [2,6,4] -&gt; Even sum: 2 + 4 = 6. Odd sum: 6. Fair.
Remove index 2: [2,1,4] -&gt; Even sum: 2 + 4 = 6. Odd sum: 1. Not fair.
Remove index 3: [2,1,6] -&gt; Even sum: 2 + 6 = 8. Odd sum: 1. Not fair.
There is 1 index that you can remove to make nums fair.
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> nums = [1,1,1]
<strong>Output:</strong> 3
<strong>Explanation:</strong>&nbsp;You can remove any index and the remaining array is fair.
</pre>

<p><strong class="example">Example 3:</strong></p>

<pre>
<strong>Input:</strong> nums = [1,2,3]
<strong>Output:</strong> 0
<strong>Explanation:</strong>&nbsp;You cannot make a fair array after removing any index.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
	<li><code>1 &lt;= nums[i] &lt;= 10<sup>4</sup></code></li>
</ul>

class Solution:
    def waysToMakeFair(self, nums: List[int]) -> int:
        
        cumul_odd = [0 for i in range(len(nums))]
        cumul_even = [0 for i in range(len(nums))]
        cumul_even[0] = nums[0]
        index = 0
        for i in range(1,len(nums)):

            if i % 2 == 0:
                cumul_even[i] = cumul_even[i-1] + nums[i]
                cumul_odd[i] = cumul_odd[i-1]
                
            else:
                cumul_even[i] = cumul_even[i-1]
                cumul_odd[i] = cumul_odd[i-1] + nums[i]
        
        print(cumul_odd)
        print(cumul_even)
        
        for i, n in enumerate(nums):

            odd = cumul_odd[i] + cumul_even[-1] - cumul_even[i]
            even = cumul_even[i] + cumul_odd[-1] - cumul_odd[i]
            # print(i)
            # print(odd, even)

            if i % 2 == 0:
                even -= n
            else:
                odd -= n

            if odd == even:
                index += 1
        
        return index
            











        # d = {}
        # sum_even = 0
        # sum_odd = 0
        # presum = []
        # for i in range(len(nums)):

        #     if i % 2 == 0:
        #         sum_even += nums[i]
        #         presum.append(sum_even)
        #     else:
        #         sum_odd += nums[i]
        #         presum.append(sum_odd)
        # odd=0
        # even=0
        # index = 0
        # curr_even = 0
        # curr_odd = 0
        # for i, n in enumerate(nums):

        #     odd = sum_even - curr_even + curr_odd
        #     even = sum_odd - curr_odd + curr_even
                
        #     if odd == even:
        #         index += 1

        #     if i % 2 == 0:
        #         curr_even += nums[i]

        #     else:
        #         curr_odd += nums[i]

        # return index
            



25600