#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
const long long LINF = (1LL << 60);
const int INF = 1 << 30;
const int NS = 111;
const int MS = 210;
const int MOD = 1000000007;
const double PI = acos(-1.0);
inline bool isdigit(char ch) { return ((ch <= '9') and (ch >= '0')); }
inline void read(int& x) {
  char ch;
  bool flag = false;
  for (ch = getchar(); !isdigit(ch); ch = getchar())
    if (ch == '-') flag = true;
  for (x = 0; isdigit(ch); x = x * 10 + ch - '0', ch = getchar())
    ;
  x = flag ? -x : x;
}
int n, a, b;
bool isOdd(int _x) { return bool(_x & 1); }
int getNum(int& pi) {
  ++pi;
  if (pi > n) return 0;
  return pi;
}
void solve() {
  if (n > a * b) {
    printf("-1\n");
    return;
  }
  int pi = 0;
  for (int i = 1; i <= a; i++) {
    if (isOdd(i) || isOdd(b)) {
      for (int j = 1; j < b; j++) {
        printf("%d ", getNum(pi));
      }
      printf("%d\n", getNum(pi));
    } else {
      printf("%d", pi + b > n ? 0 : pi + b);
      for (int j = 1; j < b; j++) {
        printf(" %d", getNum(pi));
      }
      printf("\n");
      ++pi;
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  while (~scanf("%d%d%d", &n, &a, &b)) {
    solve();
  }
  return 0;
}
