#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define all(st) st.begin(), st.end()
#define el '\n'
#define sp ' '
#define ld long double
#define fixed(x) fixed << setprecision(x)
#define BI acos(-1)
#define nl '\n'
using ll = long long;
using namespace __gnu_pbds;
using namespace std;
template <class t>
using ordered_set = tree<t, null_type, less<t>, rb_tree_tag, tree_order_statistics_node_update>;
template <class t>
using ordered_multiset = tree<t, null_type, less_equal<t>, rb_tree_tag, tree_order_statistics_node_update>;
int main(void)
{ 
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);

int n; cin >> n;
vector<ll> arr(n);
for(int i = 0;i < n; i++)
{
  cin >> arr[i];
}
  
vector<ll> suffreq(n+1,0);
ll evencnt = 0 , oddcnt =0;
for(int i = 1; i <= n; i++)
{
suffreq[i] = suffreq[i-1];
if(arr[i-1] == 1) suffreq[i]++;
if(suffreq[i]%2 == 0)
{
    evencnt++;
} 
else
{
    oddcnt++;

}
    

}
cout << oddcnt*(evencnt+1);


}