#include<bits/stdc++.h>usingnamespacestd;voidsolve(vector<vector<int>>&m){intn=m.size();vector<int>a(n);// In each iteration, we compute the answer for i-th bit.
for(intbit=0;bit<30;bit++){intzero_location=-1;for(inti=0;i<n;i++){for(intj=i+1;j<n;j++){// If this is a one, ignore it.
if((1<<bit)&m[i][j]){}else{zero_location=i;}}}// All bits should be set.
if(zero_location==-1){for(inti=0;i<n;i++){a[i]|=(1<<bit);}}else{// 0 | x = x
for(intj=0;j<n;j++){if(j!=zero_location){if((1<<bit)&m[zero_location][j]){a[j]|=(1<<bit);}}}}}// Now do a simple verification.
for(inti=0;i<n;i++){for(intj=0;j<n;j++){if(i==j){continue;}if(m[i][j]!=(a[i]|a[j])){cout<<"NO"<<"\n";return;}}}cout<<"YES"<<"\n";for(inti=0;i<n;i++){cout<<a[i]<<" ";}cout<<"\n";}intmain(){intt;cin>>t;for(intzz=0;zz<t;zz++){intn;cin>>n;vector<vector<int>>m(n,vector<int>(n,0));for(inti=0;i<n;i++){for(intj=0;j<n;j++){cin>>m[i][j];}}solve(m);}return0;}