#include <stdio.h>
void for_even(FILE*, int, int), for_odd(FILE*, int, int);
int main() {
FILE *f;
int n, k;
f = fopen("tablete.in", "rt");
fscanf(f, "%d", &n);
fscanf(f, "%d", &k);
fclose(f);
f = fopen("tablete.out", "wt");
if(n%2)
for_odd(f, n, k);
else
for_even(f, n, k);
fclose(f);
return 0;
}
void for_even(FILE *f, int n, int k) {
int i, j;
if(k%2) {
for(i = 0; i < n/2; i++) {
for(j = 2; j <= n; j++)
fprintf(f, "%d ", (i<<1)*n + j);
fprintf(f, "%d\n", (i<<1)*n + (n<<1));
fprintf(f, "%d ", (i<<1)*n + 1);
for(j = 1; j < n; j++)
fprintf(f, "%d ", ((i<<1)+1)*n + j);
fprintf(f, "\n");
}
} else {
for(i = 0; i < n; i++) {
for(j = 1; j <= n; j++)
fprintf(f, "%d ", i*n+j);
fprintf(f, "\n");
}
}
}
void for_odd(FILE *f, int n, int k) {
int i, j;
if(k%2) {
for(i = 0; ; i++) {
for(j = 2; j <= n+1; j++)
fprintf(f, "%d ", (i<<1)*n + j);
fprintf(f, "\n");
if(i == (n>>1) - 1)
break;
fprintf(f, "%d ", (i<<1)*n + 1);
for(j = 2; j <= n; j++)
fprintf(f, "%d ", ((i<<1)+1)*n + j);
fprintf(f, "\n");
}
fprintf(f, "%d ", (i<<1)*n + 1);
for(j = 2; j < n; j++)
fprintf(f, "%d ", ((i<<1)+1)*n + j);
fprintf(f, "%d\n", ((i<<1)+2)*n + k);
fprintf(f, "%d ", ((i<<1)+1)*n + n);
for(j = 1; j <= n; j++)
if(j != k)
fprintf(f, "%d ", ((i<<1)+2)*n + j);
fprintf(f, "\n");
} else {
for(i = 0; i < n/2; i++) {
for(j = 1; j < n; j++)
fprintf(f, "%d ", (i<<1)*n + j);
fprintf(f, "%d\n", (i<<1)*n + (n<<1));
for(j = 0; j < n; j++)
fprintf(f, "%d ", ((i<<1)+1)*n + j);
fprintf(f, "\n");
}
for(j = 1; j <= n; j++)
fprintf(f, "%d ", (i<<1)*n+j);
fprintf(f, "\n");
}
}