class Solution {
public boolean canThreePartsEqualSum(int[] A) {
int sum = 0;
for (int i : A) sum += i;
if (sum % 3 != 0) return false;
int left = 0;
int right = A.length - 1;
int leftSum = A[left];
int rightSum = A[right];
int midSum = sum - leftSum - rightSum;
while (left < right - 1) {
// System.out.println(leftSum + ", " + midSum + ", " + rightSum);
if (leftSum == midSum && midSum == rightSum) {
return true;
}
if (leftSum != sum / 3) {
leftSum += A[++left];
} else if (rightSum != sum / 3) {
rightSum += A[--right];
}
midSum = sum - leftSum - rightSum;
}
return false;
}
}