#include <bits/stdc++.h>
const double eps = 1e-8;
const int MAXN = (int)5e2 + 5;
using namespace std;
int table[MAXN][MAXN];
int main(int argc, char const *argv[]) {
  int n, k;
  cin >> n >> k;
  int id = 1;
  int nid = id + n * (k - 1);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (j < k - 1) {
        table[i][j] = id++;
      } else {
        table[i][j] = nid++;
      }
    }
  }
  long long res = 0;
  for (int i = 0; i < n; i++) {
    res += table[i][k - 1];
  }
  cout << res << endl;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      printf("%d ", table[i][j]);
    }
    puts("");
  }
  return 0;
}
