#include <bits/stdc++.h>
#define pb push_back
#define ll long long
#define ts to_string
#define all(x) (x).begin(), (x).end()
#define dbg(a); cerr<<#a<<"="<< (a)<<endl;
#define dbg2(a,b); cerr<<#a<<"="<<(a)<<", "<<#b<<"="<<(b)<<endl;
#define dbgarr(a); for(int elem:a)cerr<<elem<<" ";cerr<<endl;
#define panic(); cout<<"we're fine"<<endl;
using namespace std;
int main()
{
	int n;cin>>n;
	if(n&1)
		cout<<"Black"<<endl;
	else
		cout<<"White"<<endl;
	
}	

#include<bits/stdc++.h>
using namespace std;
using uint = unsigned int;
using ll = long long;
using ull = unsigned long long;

#define FOR(i,a,b) for (int i = a; i < b; ++i)
#define FORR(i,a,b) for (int i = b - 1; i >= a; --i)
#define REP(i,n) FOR(i,0,n)
#define REPR(i,n) FORR(i,0,n)

int main() {
	int N;
	cin >> N;

	vector<vector<int>> C(N, vector<int>(N, 0));
	REP(i, N) {
		REP(j, N) {
			cin >> C[i][j];
		}
	}

	int m = *min_element(C[0].begin(), C[0].end());

	vector<int> A(N, 0), B(N, 0);
	REP(i, N) B[i] = C[0][i] - m;
	REP(i, N) A[i] = C[i][0] - B[0];

	bool check = true;
	REP(i, N) if (A[i] < 0) check = false;
	REP(i, N) if (B[i] < 0) check = false;
	REP(i, N) REP(j, N) if (C[i][j] != A[i] + B[j]) check = false;

	if (check) {
		cout << "Yes" << endl;
		REP(i, N) cout << A[i] << " ";
		cout << endl;
		REP(i, N) cout << B[i] << " ";
		cout << endl;
	}
	else {
		cout << "No" << endl;
	}

	return 0;
}