#include <algorithm>
#include <cmath>
#include <cstring>
#include <iostream>
#include <iomanip>
#include <limits.h>
#include <set>
#include <string>
#include <queue>
#include <stack>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <deque>
#include <map>
#include <chrono>
#include <random>
#include <bitset>
#include <tuple>
#define SZ(x) int(x.size())
#define FR(i,a,b) for(int i=(a);i<(b);++i)
#define FOR(i,n) FR(i,0,n)
#define FAST ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define A first
#define B second
#define mp(a,b) make_pair(a,b)
typedef long long LL;
typedef long double LD;
typedef unsigned long long ULL;
typedef unsigned __int128 U128;
typedef __int128 I128;
typedef std::pair<int,int> PII;
typedef std::pair<LL,LL> PLL;
using namespace std;
vector<vector<LL> > chunk;
vector<vector<LL> > ans;
signed main(){
FAST;
LL n; cin>>n;
if (n<=4){
FOR(i,n){
FOR(j,12) cout<<i*12+j<<" ";
cout<<"\n";
}
return 0;
}
if (n==28 || n==21 || n==15 || n==10 || n==6 || n==7 || n==8 || n==11 || n==16){
LL k=0;
if (n==28) k=8;
else if (n==21) k=7;
else if (n==15 || n==16) k=6;
else if (n==10 || n==11) k=5;
else if (n==6 || n==7 || n==8) k=4;
vector<LL> cur;
FOR(i,50){
cur.push_back(i);
if (SZ(cur)==6){
chunk.push_back(cur);
cur.clear();
}
}
FOR(i,k) FR(j,i+1,k){
vector<LL> tmp;
for (LL x:chunk[i]) tmp.push_back(x);
for (LL x:chunk[j]) tmp.push_back(x);
ans.push_back(tmp);
}
if (n==7 || n==8 || n==11 || n==16){
vector<LL> tmp;
for (int i=49; i>=38; i--) tmp.push_back(i);
ans.push_back(tmp);
}
if (n==8){
vector<LL> tmp;
for (int i=37; i>=26; i--) tmp.push_back(i);
ans.push_back(tmp);
}
//cout<<SZ(ans);
FOR(i,n){
FOR(j,12) cout<<ans[i][j]<<" ";
cout<<"\n";
}
return 0;
}
else if (n==20 || n==35){
LL k=0;
if (n==20) k=6;
else if (n==35) k=7;
vector<LL> cur;
FOR(i,50){
cur.push_back(i);
if (SZ(cur)==4){
chunk.push_back(cur);
cur.clear();
}
}
FOR(i,k) FR(j,i+1,k) FR(h,j+1,k) {
vector<LL> tmp;
for (LL x:chunk[i]) tmp.push_back(x);
for (LL x:chunk[j]) tmp.push_back(x);
for (LL x:chunk[h]) tmp.push_back(x);
ans.push_back(tmp);
}
FOR(i,n){
FOR(j,12) cout<<ans[i][j]<<" ";
cout<<"\n";
}
return 0;
}
}