#include <bits/stdc++.h>
using namespace std;

void executeTime() {
    cerr << "Time Taken: " << (float)clock() / CLOCKS_PER_SEC << " secs";
}

int main() {


    int n; cin >> n;

    vector<int> a(n), b(n);
    for (auto &x : a) {
        cin >> x;
    }

    for (auto &x : b) {
        cin >> x;
    }

    vector<array<int, 2>> dp_a(n, array<int, 2> ({0, 0})), dp_b(n, array<int, 2> ({0, 0}));

    int p = 0;
    if (a[0] & 1) p = 1;

    dp_a[0][p] = 1;

    p = 0;
    if (b[0] & 1) p = 1;
    dp_b[0][p] = 1;

    for (int i = 1; i < n; i++) {
        if (a[i] & 1) {
            dp_a[i][0] = dp_a[i - 1][1] + dp_b[i - 1][1];
            dp_a[i][1] = dp_a[i - 1][0] + dp_b[i - 1][0];
        } else {
            dp_a[i][0] = dp_a[i - 1][0] + dp_b[i - 1][0];
            dp_a[i][1] = dp_a[i - 1][1] + dp_b[i - 1][1];
        }

        if (b[i] & 1) {
            dp_b[i][0] = dp_a[i - 1][1] + dp_b[i - 1][1];
            dp_b[i][1] = dp_a[i - 1][0] + dp_b[i - 1][0];
        } else {
            dp_b[i][0] = dp_a[i - 1][0] + dp_b[i - 1][0];
            dp_b[i][1] = dp_a[i - 1][1] + dp_b[i - 1][1];
        }
    }

    cout << dp_a[n - 1][0] + dp_b[n - 1][0] << endl;

    executeTime();
    return 0;
}
