#include <bits/stdc++.h>
using namespace std;
long long solve(vector<int>& nums) {
int n = nums.size();
// count subarrays with even odd count using prefix parity
long long cnt[2] = {1, 0}; // even, odd parity counts
int parity = 0;
long long ans = 0;
for (int x : nums) {
parity ^= (x & 1);
ans += cnt[parity];
cnt[parity]++;
}
// count all-odd subarrays by length parity
long long evenLen = 0, oddLen = 0;
int len = 0;
for (int i = 0; i <= n; i++) {
if (i < n && (nums[i] & 1)) {
len++;
} else {
if (len > 0) {
long long a = (len + 1) / 2; // odd positions
long long b = len / 2; // even positions
oddLen += a * (a + 1) / 2 + b * (b + 1) / 2;
evenLen += a * b;
len = 0;
}
}
}
// balanced = (even odd count AND not all-odd) OR (all-odd AND odd length)
return ans - evenLen + oddLen;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
cout << solve(nums) << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpsb25nIGxvbmcgc29sdmUodmVjdG9yPGludD4mIG51bXMpIHsKICAgIGludCBuID0gbnVtcy5zaXplKCk7CiAgICAKICAgIC8vIGNvdW50IHN1YmFycmF5cyB3aXRoIGV2ZW4gb2RkIGNvdW50IHVzaW5nIHByZWZpeCBwYXJpdHkKICAgIGxvbmcgbG9uZyBjbnRbMl0gPSB7MSwgMH07IC8vIGV2ZW4sIG9kZCBwYXJpdHkgY291bnRzCiAgICBpbnQgcGFyaXR5ID0gMDsKICAgIGxvbmcgbG9uZyBhbnMgPSAwOwogICAgCiAgICBmb3IgKGludCB4IDogbnVtcykgewogICAgICAgIHBhcml0eSBePSAoeCAmIDEpOwogICAgICAgIGFucyArPSBjbnRbcGFyaXR5XTsKICAgICAgICBjbnRbcGFyaXR5XSsrOwogICAgfQogICAgCiAgICAvLyBjb3VudCBhbGwtb2RkIHN1YmFycmF5cyBieSBsZW5ndGggcGFyaXR5CiAgICBsb25nIGxvbmcgZXZlbkxlbiA9IDAsIG9kZExlbiA9IDA7CiAgICBpbnQgbGVuID0gMDsKICAgIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgaWYgKGkgPCBuICYmIChudW1zW2ldICYgMSkpIHsKICAgICAgICAgICAgbGVuKys7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGxlbiA+IDApIHsKICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBhID0gKGxlbiArIDEpIC8gMjsgLy8gb2RkIHBvc2l0aW9ucwogICAgICAgICAgICAgICAgbG9uZyBsb25nIGIgPSBsZW4gLyAyOyAgICAgICAvLyBldmVuIHBvc2l0aW9ucwogICAgICAgICAgICAgICAgb2RkTGVuICs9IGEgKiAoYSArIDEpIC8gMiArIGIgKiAoYiArIDEpIC8gMjsKICAgICAgICAgICAgICAgIGV2ZW5MZW4gKz0gYSAqIGI7CiAgICAgICAgICAgICAgICBsZW4gPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBiYWxhbmNlZCA9IChldmVuIG9kZCBjb3VudCBBTkQgbm90IGFsbC1vZGQpIE9SIChhbGwtb2RkIEFORCBvZGQgbGVuZ3RoKQogICAgcmV0dXJuIGFucyAtIGV2ZW5MZW4gKyBvZGRMZW47Cn0KCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIAogICAgaW50IG47CiAgICBjaW4gPj4gbjsKICAgIAogICAgdmVjdG9yPGludD4gbnVtcyhuKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgY2luID4+IG51bXNbaV07CiAgICB9CiAgICAKICAgIGNvdXQgPDwgc29sdmUobnVtcykgPDwgIlxuIjsKICAgIHJldHVybiAwOwp9