#include<bits/stdc++.h>
using namespace std;

set<int> s;

vector<int> v,e;
long long int g[10][10];
int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	v.emplace_back(1);
	v.emplace_back(2);
	int now=3;
	s.insert(1);
	s.insert(2);
	s.insert(3);
	for(int i=2;i<=8;i++){
		while(true){
			bool sw=0;
			for(int j=0;j<i;j++)
				if(s.find(v[j]+now)!=s.end())
					sw=true;
			if(s.find(now)!=s.end())	sw=true;
			if(!sw){
				for(int j=0;j<i;j++)
					s.insert(v[j]+now);
				v.emplace_back(now);
				now++;
				break;
			}
			now++;
		}
	}
	g[0][1]=g[1][0]=1;
	e.emplace_back(0);
	e.emplace_back(1);
	long long int ans=0;
	for(int i=2;i<10;i++){
		long long int M=0;
		do{
			long long int tmp=0;
			for(int j=0;j<i-1;j++)
				tmp+=g[e[j]][e[j+1]];
			M=max(M,tmp);
		}while(next_permutation(e.begin(),e.end()));
		M++;
		e.emplace_back(i);
		sort(e.begin(),e.end());
		for(int j=0;j<i;j++)
			g[j][i]=g[i][j]=M*v[j];
	}
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++)
			cout<<g[i][j]<<' ';
		cout<<endl;
	}
}
