
#include <bits/stdc++.h>
using namespace std;
vector<int> fun(vector<int>&a,vector<int>&b,int n){
    vector<vector<int>>dpe(n,vector<int>(2,0));
    vector<vector<int>>dpo(n,vector<int>(2,0));
    if(a[0]%2==0){
        dpe[0][0]=1;//->  dp[i][0]number of even journeys till index i of first array 
    }
    if(a[0]%2!=0){
        dpo[0][0]=1;
    }
    if(b[0]%2==0){
        dpe[0][1]=1;
    }
    if(b[0]%2!=0){
        dpo[0][1]=1;
    }   
    
    
    for(int i=1;i<n;i++){
        if(a[i]%2==0){
            dpe[i][0]=dpe[i-1][0]+dpe[i-1][1];
            dpo[i][0]=dpo[i-1][0]+dpo[i-1][1];
        }
        else{
            dpe[i][0]=dpo[i-1][0]+dpo[i-1][1];
            dpo[i][0]=dpe[i-1][0]+dpe[i-1][1];
        }
        if(b[i]%2==0){
            dpe[i][1]=dpe[i-1][0]+dpe[i-1][1];
            dpo[i][1]=dpo[i-1][0]+dpo[i-1][1];
        }
        else{
            dpe[i][1]=dpo[i-1][0]+dpo[i-1][1];
            dpo[i][1]=dpe[i-1][0]+dpe[i-1][1];
        }        
    }
    
    return {dpe[n-1][0]+dpe[n-1][1],dpo[n-1][0]+dpo[n-1][1]};
   
}
int main()
{
    vector<int>a={2,2};
    vector<int>b={4,1};
    vector<int>ans=fun(a,b,2);
    for(int i:ans){
        cout<<i<< "  ";
    }cout<<endl;
    return 0;
}