#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> multiply(vector<vector<int>> A, vector<vector<int>> B){
int l1=A.size();
int l2=B.size();
vector<vector<int>> tmp;
for(int i=1;i<l1;i++)
for(int j=1;j<l2;j++){
int sum=0;
for(int i1=1;i1<l1;i1++){
sum+=A[i][i1]*B[i1][j];
}
tmp[i][1];
}
return tmp;
}
vector<vector<int>> pow(vector<vector<int>> A, int p){
if(p==1) return A;
//p is odd
if(p&1){
return multiply(A,pow(A,p-1));
}
vector<vector<int>> X=pow(A,p/2);
return multiply(X,X);
}
int main()
{
int n;cin>>n;
vector<int> F1;
int k=2;//k=2 for fibonacci as any term depends on previous 2 terms
F1.push_back(0); F1.push_back(1); //creating a starting matrix [0 1]
vector<vector<int>> T(k+1,vector<int>(k+1));
//Transformation matrix
//0 1
//1 1
T[1][1]=0; T[1][2]=1;
T[2][1]=1; T[2][2]=1;
//calc (n-1)th power of T matrix
T=pow(T,n-1);
for(int i=1;i<T.size();i++)
{
for(int j=1;j<T.size();j++){
cout<<T[i][j]<<" ";
}
cout<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZlY3Rvcjx2ZWN0b3I8aW50Pj4gbXVsdGlwbHkodmVjdG9yPHZlY3RvcjxpbnQ+PiBBLCB2ZWN0b3I8dmVjdG9yPGludD4+IEIpewoJaW50IGwxPUEuc2l6ZSgpOwoJaW50IGwyPUIuc2l6ZSgpOwoJdmVjdG9yPHZlY3RvcjxpbnQ+PiB0bXA7Cglmb3IoaW50IGk9MTtpPGwxO2krKykKCWZvcihpbnQgaj0xO2o8bDI7aisrKXsKCQlpbnQgc3VtPTA7CgkJZm9yKGludCBpMT0xO2kxPGwxO2kxKyspewoJCQlzdW0rPUFbaV1baTFdKkJbaTFdW2pdOwoJCX0KCQl0bXBbaV1bMV07Cgl9CglyZXR1cm4gdG1wOwp9CnZlY3Rvcjx2ZWN0b3I8aW50Pj4gcG93KHZlY3Rvcjx2ZWN0b3I8aW50Pj4gQSwgaW50IHApewoJaWYocD09MSkgcmV0dXJuIEE7CgkvL3AgaXMgb2RkCglpZihwJjEpewoJCXJldHVybiBtdWx0aXBseShBLHBvdyhBLHAtMSkpOwoJfQoJdmVjdG9yPHZlY3RvcjxpbnQ+PiBYPXBvdyhBLHAvMik7CglyZXR1cm4gbXVsdGlwbHkoWCxYKTsKfQoKaW50IG1haW4oKQp7CglpbnQgbjtjaW4+Pm47Cgl2ZWN0b3I8aW50PiBGMTsKCWludCBrPTI7Ly9rPTIgZm9yIGZpYm9uYWNjaSBhcyBhbnkgdGVybSBkZXBlbmRzIG9uIHByZXZpb3VzIDIgdGVybXMKCUYxLnB1c2hfYmFjaygwKTsgRjEucHVzaF9iYWNrKDEpOyAvL2NyZWF0aW5nIGEgc3RhcnRpbmcgbWF0cml4IFswIDFdCgl2ZWN0b3I8dmVjdG9yPGludD4+IFQoaysxLHZlY3RvcjxpbnQ+KGsrMSkpOwoJLy9UcmFuc2Zvcm1hdGlvbiBtYXRyaXggCgkvLzAgIDEKCS8vMSAgMQoJVFsxXVsxXT0wOyBUWzFdWzJdPTE7CglUWzJdWzFdPTE7IFRbMl1bMl09MTsKCgkvL2NhbGMgKG4tMSl0aCBwb3dlciBvZiBUIG1hdHJpeAoJVD1wb3coVCxuLTEpOwoJZm9yKGludCBpPTE7aTxULnNpemUoKTtpKyspCgl7Cglmb3IoaW50IGo9MTtqPFQuc2l6ZSgpO2orKyl7CgkJY291dDw8VFtpXVtqXTw8IiAiOwoJfQoJY291dDw8ZW5kbDsKCX0KCgp9