Language: C++

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#define int unsigned long long
using namespace std;
const int maxn = 5e2+10;

int read(){
	int x=0,f=1;
	char c=getchar();
	while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
	while(isdigit(c)){x=(x<<3)+(x<<1)+c-48;c=getchar();}
	return x*f;
}

int k,m,n;
int a[maxn],b[maxn],c[maxn],d[maxn],ans[maxn][maxn],anss[maxn][maxn];
int check1[maxn],check2[maxn];
vector<int> a1,a2;
int P[100];
inline void solve(int x){
	memset(check1,0,sizeof(check1));
	memset(check2,0,sizeof(check2));
	memset(anss,0x3f,sizeof(anss));a1.clear();a2.clear();
	for(register int i=1;i<=n;i++){
		if(a[i]==1 && c[i]%2==0){
			check1[i]=1;
			for(register int j=1;j<=n;j++)anss[i][j]=0;
		}
		if(a[i]==0 && c[i]%2==1){
			check1[i]=1;
			for(register int j=1;j<=n;j++)anss[i][j]=1;
		}
	}
	for(register int i=1;i<=n;i++){
		if(b[i]==1 && d[i]%2==0){
			check2[i]=1;
			for(register int j=1;j<=n;j++){if(anss[j][i]==1){puts("-1");exit(0);}anss[j][i]=0;}
		}
		if(b[i]==0 && d[i]%2==1){
			check2[i]=1;
			for(register int j=1;j<=n;j++){if(anss[j][i]==0){puts("-1");exit(0);}anss[j][i]=1;}
		}
	}
	for(register int i=1;i<=n;i++){
		for(register int j=1;j<=n;j++){
			if(a[i]==1 && b[j]==1 && c[i]%2==1 && d[j]%2==1){
				check1[i]=1;check2[j]=1;
				anss[i][j]=1;
			}
			if(a[i]==0 && b[j]==0 && c[i]%2==0 && d[j]%2==0){
				check1[i]=1;check2[j]=1;
				anss[i][j]=0;
			}
			if(anss[i][j]==a[i] && a[i]==c[i]%2)check1[i]=1;
			if(anss[i][j]==b[j] && b[j]==d[j]%2)check2[j]=1;
		}
	}
	int num1=0,num2=0;
	for(register int i=1;i<=n;i++)if(check1[i]==0){num1++;a1.push_back(i);}
	for(register int i=1;i<=n;i++)if(check2[i]==0){num2++;a2.push_back(i);}
	if(num1!=0 && num2!=0){
		if(num1==1 || num2==1){puts("-1");exit(0);}
		int flag=1;
		if(num1<=num2 && a1[0]==0)flag=0;
		else if(num2<=num1 && a1[0]==1)flag=0;<F2>
		else flag=1;
		for(register int i=0;i<=num1;i++){
			for(register int j=0;j<=num2;j++){
				if(i==j)anss[i][j]=flag;
				else anss[i][j]=flag^1;
			}
		}
	}
	else {
		for(register int i=1;i<=n;i++)
			for(register int j=1;j<=n;j++){
				if(anss[i][j]==0 || anss[i][j]==1)continue;
				if(check1[i]==0){
					if(a[i]==1){anss[i][j]=1;check1[i]=1;}
					else {anss[i][j]=0;check1[i]=1;}
				}
				if(check2[j]==0){
					if(b[j]==1){anss[i][j]=1;check2[j]=1;}
					else {anss[i][j]=0;check2[j]=1;}
				}
			}
	}
	for(register int i=1;i<=n;i++)
		for(register int j=1;j<=n;j++)
			if(anss[i][j]!=0 && anss[i][j]!=1)anss[i][j]=0;
	for(register int i=1;i<=n;i++)
		for(register int j=1;j<=n;j++){
			ans[i][j]+=anss[i][j]*P[x];
		}
//	for(register int i=1;i<=n;i++){
//		for(register int j=1;j<=n;j++){
//			cout<<anss[i][j]<<" ";
//		}
//		puts("");
//	}
	for(register int i=1;i<=n;i++){c[i]/=2;d[i]/=2;}
//	for(register int i=1;i<=n;i++)cout<<c[i]<<" "<<d[i]<<endl;puts("");
}

signed main(){
//	freopen("f.in","r",stdin);
//	freopen("f.out","w",stdout);
	P[0]=1;
	for(register int i=1;i<=63;i++){
		P[i]=P[i-1]*2ll;
	}
	n=read();
	for(register int i=1;i<=n;i++)a[i]=read();
	for(register int i=1;i<=n;i++)b[i]=read();
	for(register int i=1;i<=n;i++)c[i]=read();
	for(register int i=1;i<=n;i++)d[i]=read();
	int now=1;
	for(register int i=0;i<=63;i++)solve(i);
	for(register int i=1;i<=n;i++){
		for(register int j=1;j<=n;j++)
			printf("%llu ",ans[i][j]);
		puts("");
	}
	return 0;
}

Compiler output:
a.cc: In function 'void solve(long long unsigned int)':
a.cc:31:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   31 |         for(register int i=1;i<=n;i++){
      |                          ^
a.cc:34:42: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   34 |                         for(register int j=1;j<=n;j++)anss[i][j]=0;
      |                                          ^
a.cc:38:42: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   38 |                         for(register int j=1;j<=n;j++)anss[i][j]=1;
      |                                          ^
a.cc:41:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   41 |         for(register int i=1;i<=n;i++){
      |                          ^
a.cc:44:42: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   44 |                         for(register int j=1;j<=n;j++){if(anss[j][i]==1){puts("-1");exit(0);}anss[j][i]=0;}
      |                                          ^
a.cc:48:42: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   48 |                         for(register int j=1;j<=n;j++){if(anss[j][i]==0){puts("-1");exit(0);}anss[j][i]=1;}
      |                                          ^
a.cc:51:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   51 |         for(register int i=1;i<=n;i++){
      |                          ^
a.cc:52:34: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   52 |                 for(register int j=1;j<=n;j++){
      |                                  ^
a.cc:66:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   66 |         for(register int i=1;i<=n;i++)if(check1[i]==0){num1++;a1.push_back(i);}
      |                          ^
a.cc:67:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   67 |         for(register int i=1;i<=n;i++)if(check2[i]==0){num2++;a2.push_back(i);}
      |                          ^
a.cc:72:55: error: expected primary-expression before '<' token
   72 |                 else if(num2<=num1 && a1[0]==1)flag=0;<F2>
      |                                                       ^
a.cc:72:56: error: 'F2' was not declared in this scope; did you mean 'a2'?
   72 |                 else if(num2<=num1 && a1[0]==1)flag=0;<F2>
      |                                                        ^~
      |                                                        a2
a.cc:73:17: error: expected primary-expression before 'else'
   73 |                 else flag=1;
      |                 ^~~~
a.cc:74:34: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   74 |                 for(register int i=0;i<=num1;i++){
      |                                  ^
a.cc:75:42: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   75 |                         for(register int j=0;j<=num2;j++){
      |                                          ^
a.cc:82:34: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   82 |                 for(register int i=1;i<=n;i++)
      |                                  ^
a.cc:83:42: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   83 |                         for(register int j=1;j<=n;j++){
      |                                          ^
a.cc:95:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   95 |         for(register int i=1;i<=n;i++)
      |                          ^
a.cc:96:34: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   96 |                 for(register int j=1;j<=n;j++)
      |                                  ^
a.cc:98:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   98 |         for(register int i=1;i<=n;i++)
      |                          ^
a.cc:99:34: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   99 |                 for(register int j=1;j<=n;j++){
      |                                  ^
a.cc:108:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  108 |         for(register int i=1;i<=n;i++){c[i]/=2;d[i]/=2;}
      |                          ^
a.cc: In function 'int main()':
a.cc:116:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  116 |         for(register int i=1;i<=63;i++){
      |                          ^
a.cc:120:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  120 |         for(register int i=1;i<=n;i++)a[i]=read();
      |                          ^
a.cc:121:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  121 |         for(register int i=1;i<=n;i++)b[i]=read();
      |                          ^
a.cc:122:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  122 |         for(register int i=1;i<=n;i++)c[i]=read();
      |                          ^
a.cc:123:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  123 |         for(register int i=1;i<=n;i++)d[i]=read();
      |                          ^
a.cc:125:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  125 |         for(register int i=0;i<=63;i++)solve(i);
      |                          ^
a.cc:126:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  126 |         for(register int i=1;i<=n;i++){
      |                          ^
a.cc:127:34: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  127 |                 for(register int j=1;j<=n;j++)
      |                                  ^