#include <bits/stdc++.h>
using namespace std;
inline void _() { ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); }
void __() {}
inline void ___(char *i, char *j) {
  freopen(i, "r", stdin);
  freopen(j, "w", stdout);
}
template <class T1>
bool tk(T1 &e1) {
  if (cin >> e1) return true;
  return false;
}
template <class T1, class T2>
bool tk(T1 &e1, T2 &e2) {
  if (cin >> e1 >> e2) return true;
  return false;
}
template <class T1, class T2, class T3>
bool tk(T1 &e1, T2 &e2, T3 &e3) {
  if (cin >> e1 >> e2 >> e3) return true;
  return false;
}
template <class T1, class T2, class T3, class T4>
bool tk(T1 &e1, T2 &e2, T3 &e3, T4 &e4) {
  if (cin >> e1 >> e2 >> e3 >> e4) return true;
  return false;
}
template <class T1, class T2, class T3, class T4, class T5>
bool tk(T1 &e1, T2 &e2, T3 &e3, T4 &e4, T5 &e5) {
  if (cin >> e1 >> e2 >> e3 >> e4 >> e5) return true;
  return false;
}
template <class T1, class T2, class T3, class T4, class T5, class T6>
bool tk(T1 &e1, T2 &e2, T3 &e3, T4 &e4, T5 &e5, T6 &e6) {
  if (cin >> e1 >> e2 >> e3 >> e4 >> e5 >> e6) return true;
  return false;
}
template <class T1>
void put(T1 e) {
  cout << e << endl;
}
template <class T1, class T2>
void put(T1 e1, T2 e2) {
  cout << e1 << " " << e2 << endl;
}
template <class T1, class T2, class T3>
void put(T1 e1, T2 e2, T3 e3) {
  cout << e1 << " " << e2 << " " << e3 << endl;
}
template <class T1, class T2, class T3, class T4>
void put(T1 e1, T2 e2, T3 e3, T4 e4) {
  cout << e1 << " " << e2 << " " << e3 << " " << e4 << endl;
}
template <class T1, class T2, class T3, class T4, class T5>
void put(T1 e1, T2 e2, T3 e3, T4 e4, T5 e5) {
  cout << e1 << " " << e2 << " " << e3 << " " << e4 << " " << e5 << endl;
}
template <class T1, class T2, class T3, class T4, class T5, class T6>
void put(T1 e1, T2 e2, T3 e3, T4 e4, T5 e5, T6 e6) {
  cout << e1 << " " << e2 << " " << e3 << " " << e4 << " " << e5 << " " << e6
       << endl;
}
template <class T1>
void putVec(vector<T1> e1) {
  for (int i = 0; i < (e1).size(); i++)
    (!i ? cout << e1[i] : cout << " " << e1[i]);
  cout << endl;
}
template <class T1>
void putArr(T1 arr[], int l) {
  for (int i = 0; i < l; i++) (!i ? cout << arr[i] : cout << " " << arr[i]);
  cout << endl;
}
template <class T1>
void bug(T1 e) {}
template <class T1, class T2>
void bug(T1 e1, T2 e2) {}
template <class T1, class T2, class T3>
void bug(T1 e1, T2 e2, T3 e3) {}
template <class T1, class T2, class T3, class T4>
void bug(T1 e1, T2 e2, T3 e3, T4 e4) {}
template <class T1, class T2, class T3, class T4, class T5>
void bug(T1 e1, T2 e2, T3 e3, T4 e4, T5 e5) {}
template <class T1, class T2, class T3, class T4, class T5, class T6>
void bug(T1 e1, T2 e2, T3 e3, T4 e4, T5 e5, T6 e6) {}
template <class T1>
void bugVec(vector<T1> e1) {}
template <class T1>
void bugArr(T1 arr[], int l) {}
namespace gv {};
long long absolute(long long a) {
  if (a < 0) return -a;
  return a;
}
int a[2][100005];
int main() {
  _();
  int n, k;
  tk(n, k);
  int p = 0;
  for (int i = 1; i < n; i++) a[1 - p][i] = a[p][i] = 1;
  bugArr(a[1], n + 1);
  for (int i = 0; i < k; i++) {
    int fp = n - (1 << i + 1);
    int sp = n - (1 << i);
    int t = sp;
    if (fp < 0) t += (-fp);
    for (int j = 1; j <= n; j++) {
      if (j <= fp)
        cout << 1 << " ", a[p][j] += a[1 - p][1];
      else if (j < sp)
        cout << (++t) << " ", a[p][j] += a[1 - p][t];
      else
        cout << n << " ";
    }
    put("");
    for (int j = 1; j <= n; j++) {
      a[1 - p][j] = a[p][j];
    }
    p = 1 - p;
    bug(fp, sp);
    bugArr(a[0], n + 1);
    bugArr(a[1], n + 1);
  }
  for (int i = 1; i <= 5; i++) bug(a[0][i], a[1][i]);
  __();
}
