Valera has got a rectangle table consisting of *n* rows and *m* columns. Valera numbered the table rows starting from one, from top to bottom and the columns – starting from one, from left to right. We will represent cell that is on the intersection of row *x* and column *y* by a pair of integers (*x*, *y*).

Valera wants to place exactly *k* tubes on his rectangle table. A tube is such sequence of table cells (*x*<sub class="lower-index">1</sub>, *y*<sub class="lower-index">1</sub>), (*x*<sub class="lower-index">2</sub>, *y*<sub class="lower-index">2</sub>), ..., (*x*<sub class="lower-index">*r*</sub>, *y*<sub class="lower-index">*r*</sub>), that: 
 -  *r* ≥ 2; -  for any integer *i* (1 ≤ *i* ≤ *r* - 1) the following equation |*x*<sub class="lower-index">*i*</sub> - *x*<sub class="lower-index">*i* + 1</sub>| + |*y*<sub class="lower-index">*i*</sub> - *y*<sub class="lower-index">*i* + 1</sub>| = 1 holds; -  each table cell, which belongs to the tube, must occur exactly once in the sequence. 
Valera thinks that the tubes are arranged in a fancy manner if the following conditions are fulfilled: 
 -  no pair of tubes has common cells; -  each cell of the table belongs to some tube. 
Help Valera to arrange *k* tubes on his rectangle table in a fancy manner.
The first line contains three space-separated integers *n*, *m*, *k* (2 ≤ *n*, *m* ≤ 300; 2 ≤ 2*k* ≤ *n*·*m*) — the number of rows, the number of columns and the number of tubes, correspondingly.
import sys
import os.path
 
if(os.path.exists('input.txt')) :
    sys.stdin = open("input.txt", "r")
    sys.stdout = open("output.txt", "w")
    sys.stderr = open("error.txt", "w")
    
depth = 200001
mod = 1000000007 
lim = mod * mod
sys.setrecursionlimit(depth) 
 
linp = lambda: list(minp())
minp = lambda: map(int, input().split())
 
from math import inf, ceil, sqrt, log2, gcd
from collections import defaultdict, deque

dxy = [(1, 0),(-1, 0),(0, 1),(0, -1)]

def expo(a, b) :
    if not b : return 1
    v = expo(a, b//2)
    v = (v * v) % mod
    if b%2 : v = (v * a) % mod
    return v

def modinv(a, b) :
    d = expo(b, mod-2)
    v = (a * d) % mod
    return v

def checkPrime(n) :
    if n < 4 : return True
    if n%2 == 0 : return False
    for i in range(3, int(sqrt(n))+1, 2) :
        if n%i == 0 :
            return False
    return True    

def findStart() :
    for i in range(n) :
        for j in range(m) :
            if not g[i][j] :
                return i, j 
    return -1, -1      

def valid(x, y) :
    if x >= n or x < 0 : return False
    if y >= m or y < 0 : return False
    if g[x][y] == True : return False
    return True 

def dfs(x, y) :
    r.append(x+1)
    r.append(y+1)
    if valid(x+1, y) :
        g[x+1][y] = True
        dfs(x+1, y)
        return 
    if valid(x, y+1) :
        g[x][y+1] = True
        dfs(x, y+1)
        return 
    if valid(x, y-1) :
        g[x][y-1] = True
        dfs(x, y-1)
        return 
    if valid(x-1, y) :
        g[x-1][y] = True
        dfs(x-1, y)
        return 
    return 

n, m, k = minp()
g = [[False for _ in range(m)] for _ in range(n)]
c, i = 0, 0
res = list()

while c < k-1 and i < n:
    j = 0
    while c < k-1 and j < m-1 :   
        g[i][j] = True
        g[i][j+1] = True 
        res.append([i+1, j+1, i+1, j+2])
        c = c + 1
        j = j + 2
    i = i + 1

if m%2 :
    i = 0
    while c < k-1 and i < n-1 :
        g[i][m-1] = True
        g[i+1][m-1] = True
        res.append([i+1, m, i+2, m])  
        c = c + 1
        i = i + 2

x, y = findStart()
r = []
g[x][y] = True
dfs(x, y)
res.append(r)
for e in res :
    print(len(e)//2, end = " ")
    print(*e)