# haru: pypy import sys input = sys.stdin.readline II = lambda : int(input()) MI = lambda : map(int, input().split()) LI = lambda : [int(a) for a in input().split()] SI = lambda : input().rstrip() LLI = lambda n : [[int(a) for a in input().split()] for _ in range(n)] LSI = lambda n : [input().rstrip() for _ in range(n)] MI_1 = lambda : map(lambda x:int(x)-1, input().split()) LI_1 = lambda : [int(a)-1 for a in input().split()] mod = 998244353 inf = 1001001001001001001 ordalp = lambda s : ord(s)-65 if s.isupper() else ord(s)-97 ordallalp = lambda s : ord(s)-39 if s.isupper() else ord(s)-97 yes = lambda : print("Yes") no = lambda : print("No") yn = lambda flag : print("Yes" if flag else "No") prinf = lambda ans : print(ans if ans < 1000001001001001001 else -1) alplow = "abcdefghijklmnopqrstuvwxyz" alpup = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" alpall = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" URDL = {'U':(-1,0), 'R':(0,1), 'D':(1,0), 'L':(0,-1)} DIR_4 = [[-1,0],[0,1],[1,0],[0,-1]] DIR_8 = [[-1,0],[-1,1],[0,1],[1,1],[1,0],[1,-1],[0,-1],[-1,-1]] DIR_BISHOP = [[-1,1],[1,1],[1,-1],[-1,-1]] prime60 = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59] sys.set_int_max_str_digits(0) # sys.setrecursionlimit(10**6) # import pypyjit # pypyjit.set_param('max_unroll_recursion=-1') from collections import defaultdict,deque from heapq import heappop,heappush from bisect import bisect_left,bisect_right DD = defaultdict BSL = bisect_left BSR = bisect_right def solve(h, w, m): if m == 0: return None a = [[0] * w for i in range(h)] # # この順序で挿入 # p = [] # for i in range(m): # p.append(0) # p.append(h * w - 1 - i) # for i in range(m, h * w - m): # p.append(i) # p = [x+1 for x in p] if min(h, w) == 1: # ok p = [] for i in range(m - 1): p.append(0) p.append(h * w - 1 - i) for i in range(m - 1, h * w - (m - 1)): p.append(i) p = [x+1 for x in p] # ok if h == 1: for j in range(w): a[0][j] = p[j] elif w == 1: for i in range(h): a[i][0] = p[i] return a if h * w % 2 == 0: p = [] for i in range(m): p.append(i) p.append(h * w - 1 - i) for i in reversed(range(m, h * w - m)): p.append(i) p = [x+1 for x in p] # print(p) # hamil if h % 2 == 0: for i in range(h): a[i][0] = p.pop() for i in reversed(range(h)): if i % 2 == 1: for j in range(1, w): a[i][j] = p.pop() else: for j in reversed(range(1, w)): a[i][j] = p.pop() else: for j in range(w): a[0][j] = p.pop() for j in reversed(range(w)): if j % 2 == 1: for i in range(1, h): a[i][j] = p.pop() else: for i in reversed(range(1, h)): a[i][j] = p.pop() return a # h * w : odd if 2 * m == h * w - 1: # onegai return None p = [] for i in range(m): p.append(i) p.append(h * w - 1 - i) for i in reversed(range(m, h * w - m)): p.append(i) p = [x+1 for x in p] p = p[::-1] # print(p) a[0][0] = p.pop() a[0][1] = p.pop() for j in range(2, w): if j % 2 == 0: a[0][j] = p.pop() a[1][j] = p.pop() else: a[1][j] = p.pop() a[0][j] = p.pop() for i in range(2, h): if i % 2 == 0: for j in reversed(range(1, w)): a[i][j] = p.pop() else: for j in range(1, w): a[i][j] = p.pop() for i in reversed(range(1, h)): a[i][0] = p.pop() a[1][1] = p.pop() a[1][0], a[1][1] = a[1][1], a[1][0] return a h, w, m = MI() a = solve(h, w, m) if a == None: print(-1) else: for i in range(h): print(*a[i])