#include "train.h"
#include <bits/stdc++.h>
using namespace std;
#define forn(i,n) for(int i=0;i<n;++i)
#define pb push_back
#define ll long long
const int N=5555;
vector<int> adj[N];
int vis[N];
vector<int> p1(vector<int>a,vector<int>r,vector<int>u,vector<int>v) {
int n=a.size(), m=u.size();
vector<int> s(n);
vector<int> f(n);
vector<int> ans(n);
forn(i,m) if (u[i]==v[i]) s[i]=1;
forn(i,m) if (u[i]!=v[i]) f[i]=1;
int now=0;
for (int i=n-1; i>=0; --i) {
if (s[i]) {
if (now) {
if (!a[i]) {
if (!r[i]) now=1;
} else {
if (f[i]) continue;
else now = r[i];
}
} else {
if (a[i]) {
if (r[i]) now=1;
} else {
if (f[i]) continue;
else now=r[i];
}
}
}
ans[i]=now;
}
return ans;
}
vector<int> p3(vector<int>a,vector<int>r,vector<int>u,vector<int>v) {
int n=a.size(), m=u.size();
vector<int> ans(n);
vector<int> ok(n);
}
vector<int> p4(vector<int>a,vector<int>r,vector<int>u,vector<int>v) {
int n=a.size(), m=u.size();
vector<int> s(n);
vector<int> ans(n);
forn(i,m) if (u[i]==v[i]) s[i]=1;
int now;
for (int i=n-1; i>=0; --i) {
if (s[i]) now=a[i];
ans[i]=now;
}
return ans;
}
vector<int> who_wins(vector<int>a,vector<int>r,vector<int>u,vector<int>v) {
int n=a.size(), m=u.size();
int z=1;
forn(i,m) z&=(u[i]==v[i]) || (v[i]==(u[i]+1));
if (z) {
return p1(a,r,u,v);
}
return vector<int>(n,0);
z=1;
forn(i,n) z&=a[i];
if (z) return p3(a,r,u,v);
forn(i,n) z|=a[i];
if (!z) return p4(a,r,u,v);
}