#include<iostream>
using namespace std;
int ceil(int x,int y){
	if(x%y==0){
		return x/y;
	}
	return x/y+1;
}
const int N=502;
int ar[N][N];
int main(){
	int num,i,j,k,l,n;
	cin>>num;
	n=ceil(num,4)*2;
	if(num==1){
		cout<<"1\n1";
		return 0;
	}
	cout<<n<<'\n';
	for(i=1;i<=n;i++){
		if((i&1)){
			for(j=1;j<=n;j++){
				ar[i][j]=(i+j)%n+1;
			}
		}
		else{
			for(j=1;j<=n;j++){
				ar[i][j]=(i+j)%n+1+n;
			}
		}
	}
	for(k=num+1;k<=2*n;k++){
		for(i=1;i<=n;i++){
			for(j=1;j<=n;j++){
				if(ar[i][j]==k){
					ar[i][j]-=n;
				}
			}
		}
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			cout<<ar[i][j]<<' ';
		}
		cout<<'\n';
	}
}