#define _DEBUG
#include "bits/stdc++.h"
//#include <atcoder/all>
#define CHOOSE(a) CHOOSE2 a
#define CHOOSE2(a0,a1,a2,a3,a4,a5,x,...) x
#define debug_1(x1) cout<<#x1<<": "<<x1<<endl
#define debug_2(x1,x2) cout<<#x1<<": "<<x1<<", "#x2<<": "<<x2<<endl
#define debug_3(x1,x2,x3) cout<<#x1<<": "<<x1<<", "#x2<<": "<<x2<<", "#x3<<": "<<x3<<endl
#define debug_4(x1,x2,x3,x4) cout<<#x1<<": "<<x1<<", "#x2<<": "<<x2<<", "#x3<<": "<<x3<<", "#x4<<": "<<x4<<endl
#define debug_5(x1,x2,x3,x4,x5) cout<<#x1<<": "<<x1<<", "#x2<<": "<<x2<<", "#x3<<": "<<x3<<", "#x4<<": "<<x4<<", "#x5<<": "<<x5<<endl
#define debug_6(x1,x2,x3,x4,x5,x6) cout<<#x1<<": "<<x1<<", "#x2<<": "<<x2<<", "#x3<<": "<<x3<<", "#x4<<": "<<x4<<", "#x5<<": "<<x5<<", "#x6<<": "<<x6<<endl
#ifdef _DEBUG
#define debug(...) CHOOSE((__VA_ARGS__,debug_6,debug_5,debug_4,debug_3,debug_2,debug_1,~))(__VA_ARGS__)
#else
#define debug(...)
#endif
#define rep(index,num) for(int index=0;index<(int)num;index++)
#define rep1(index,num) for(int index=1;index<=(int)num;index++)
#define brep(index,num) for(int index=(int)num-1;index>=0;index--)
#define brep1(index,num) for(int index=(int)num;index>0;index--)
#define scan(argument) cin>>argument
#define prin(argument) cout<<argument<<endl
#define prind(argument) cout<<std::fixed<<setprecision(13)<<argument<<endl
#define kaigyo cout<<endl
#define eps 1e-7
#define PI acosl(-1)
#define mp(a1,a2) make_pair(a1,a2)
#define ALL(a) (a).begin(),(a).end()
#define rALL(a) (a).rbegin(),(a).rend()
#define puba emplace_back
#define pubamp(a,b) emplace_back(mp(a,b))
typedef long long ll;
typedef long double ld;
using namespace std;
//using namespace atcoder;
typedef pair<ll,ll> pll;
typedef pair<int,int> pint;
typedef vector<int> vint;
typedef vector<ll> vll;
typedef vector<vint> vvint;
typedef vector<vll> vvll;
typedef vector<pint> vpint;
typedef vector<pll> vpll;
template<class T> bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T> bool chmin(T &a, const T &b) { if (a>b) { a=b; return 1; } return 0; }
ll INFl=(ll)1e+18+1;
int INF=1e+9+1;
int main(){
	int N;
	int L[2001],R[2001];
	scan(N);
	rep(i,N){
		int t,l,r;
		scan(t>>l>>r);
		l*=2,r*=2;
		if(t<=2) L[i]=l;
		else L[i]=l+1;
		if(t%2) R[i]=r;
		else R[i]=r-1;
	}
	int ans=0;
	rep(i,N){
		for(int j=i+1;j<N;j++){
			//debug(L[i],R[i],L[j],R[j]);
			if(R[i]<L[j]||R[j]<L[i]){

			}
			else ans++;
		}
	}
	prin(ans);
	return 0;
}

/*君は今なにをして生きる
君は今なにをして生きてる？

いつまでたっても君は相も変わらず暮らしているようで
本音　深い暗い沼の底で
溜まりに溜まって溢れそうです

光景　あの時の思い出
美化に美化　重ねてしまった
いいないいなあの子は楽しそう
嫌いなあの子は

わたしはわたしでがんばった
あなたはあなたで何していた？
気づいた時には粉々の鏡
あなたにきづいてほしかったな

まだかな　まだかな
待っていたのに　待っていたのに
愛していたのに　愛していたのに

永遠の愛はメーデーの中
永遠の愛はたしかにどこにももうない*/


#include <bits/stdc++.h>
#define fastio()                  \
    ios_base::sync_with_stdio(0); \
    cin.tie(0);                   \
    cout.tie(0)
#define pb push_back
#define show(x) cout << (#x) << " : " << x << endl;
#define ll long long
#define ull unsigned long long
#define ld long double
#define pow power
#define mp make_pair
#define ff first
#define ss second
#define pii pair<ll, ll>
#define sq(x) ((x) * (x))
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define siz(a) int((a).size())
#define For(i,a,b) for(int (i)=(a);(i) < (b); ++(i))
#define endl "\n"
#define pi 3.14159265
const ll mod = 1000 * 1000 * 1000 + 7;
const ll mod1 = 998244353;
const ll INF     = 1ll*1000*1000*1000*1000*1000*1000 + 7; 
//typedef tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
//typedef tree<pair<ll, ll>,null_type,less<pair<ll, ll>>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
using namespace std;

ll power(ll x, ll y) 
{ 
   ll res = 1;      
  
   
    while (y > 0) 
    { 
       
        if (y & 1) 
            res = (long long)(res*x); 
  

        y = y>>1; 

        x = (long long)(x*x);

        //cout<<x<<'\n'; 
    } 
    return res; 
} 



// Stolen Templates
template <typename T>
T MIN(T first) { return first; }

template <typename T, typename... Args>
T MIN(T first, Args... args) { return min(first, MIN(args...)); }


template <typename T>
T MAX(T first) { return first; }

template <typename T, typename... Args>

T MAX(T first, Args... args) { return max(first, MAX(args...)); }
// Stolen Templates end here




int main()
{

#ifndef ONLINE_JUDGE    
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif

fastio();
    ll n;
    cin>>n;

    ll a[n][n];
    ll sum = 0;

    For(i,0,n) {
        For(j,0,n) {
            cin>>a[i][j];
            sum+=a[i][j];
        }
    }

        // if (sum%n!=0) {
        //     cout<<"No";
        //     return 0;
        // }
        
        vector <pii> val;

        ll cu = a[0][0]; ll pos = 0;
        for(int j=1;j<n;j++){
            ll cur = a[0][j-1] - a[0][j]; 
            for(int i=1;i<n;i++) {
                if (cur!=a[i][j-1]-a[i][j]) {
                    cout<<"No";
                    return 0;
                }
            }
            if (a[j][0] < cu) {
                cu = a[j][0];
                pos = j;
            }
        }

        cout<<"Yes"<<endl;

        for(int i = 0; i < n; i++)
            cout<<a[i][i] - a[pos][i]<<' ';

        cout<<endl;

        for(int i = 0; i < n; i++)
            cout<<a[pos][i]<<' ';

        
    

return 0;
}

// check all product based operations for integer overflow
// careful of renamed variables especially in loops






  


