#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("tablete.in");
ofstream fout("tablete.out");
int n,k,v1[1001],v2[1001],v3[1001],h;
int a[1001][1001];
int main(){
fin>>n>>k;
if(n%2==0&&k%2==0){
int x=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
fout<<++x<<" ";
}
fout<<"\n";
}
}
if(n%2==1&&k%2==0){
int x=0;
for(int i=1;i<=n;i++)
a[i][1]=++x;
for(int i=1;i<=n;i++){
for(int j=2;j<=n;j++){
a[i][j]=++x;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
fout<<a[i][j]<<" ";
fout<<"\n";
}
}
if(n%2==0&&k%2==1){
int x=0;
for(int j=1;j<=n;j++){
for(int i=1;i<=n;i++){
a[i][j]=++x;
}
}
for(int i=1;i<=n;i++){
if(a[i][k]%2==0)
swap(a[i][k],a[i+1][k-1]);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
fout<<a[i][j]<<" ";
fout<<"\n";
}
}
if(n%2==1&&k%2==1){
int x=0;
for(int j=1;j<=n;j++){
for(int i=1;i<=n;i++){
a[i][j]=++x;
}
}
for(int i=1;i<=n;i++){
if(a[i][k]%2==1&&i!=n)
swap(a[i][k],a[i+2][k-1]);
if(i==n&&a[i][k]%2==1)
swap(a[i][k],a[i-2][k+1]);
v1[++h]=a[i][k-1];
v2[h]=a[i][k];
v3[h]=a[i][k+1];
}
sort(v1+1,v1+h+1);
sort(v2+1,v2+h+1);
sort(v3+1,v3+h+1);
for(int i=1;i<=h;i++){
a[i][k-1]=v1[i];
a[i][k]=v2[i];
a[i][k+1]=v3[i];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
fout<<a[i][j]<<" ";
}
fout<<"\n";
}
}
return 0;
}