#include <bits/stdc++.h>
using namespace std;
const long long INF = 1000000000 + 7;
const double esp = 1e-13;
struct PT {
  double x, y;
  PT() {}
  PT(double x, double y) : x(x), y(y) {}
  PT(const PT &p) : x(p.x), y(p.y) {}
  PT operator-(const PT &p) { return PT(x - p.x, y - p.y); }
  PT operator+(const PT &p) { return PT(x + p.x, y + p.y); }
  PT operator*(double c) { return PT(x * c, y * c); }
  PT operator/(double c) { return PT(x / c, y / c); }
  bool operator==(const PT &p) { return x == p.x && y == p.y; }
  bool operator!=(const PT &p) { return x != p.x || y != p.y; }
};
double dot(PT p, PT q) { return p.x * q.x + p.y * q.y; }
double dist2(PT p, PT q) { return dot(p - q, p - q); }
double cross(PT p, PT q) { return p.x * q.y - p.y * q.x; }
ostream &operator<<(ostream &os, const PT &p) {
  os << "(" << p.x << "," << p.y << ")";
}
int n, m, k, a[100000 + 10], b[100000 + 10], dem;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie();
  cin >> n >> m >> k;
  for (long long i = 1; i <= n; i++)
    if (i % 2) {
      for (long long j = 1; j <= m; j++) {
        dem++;
        a[dem] = i;
        b[dem] = j;
      }
    } else {
      for (long long j = m; j >= 1; j--) {
        dem++;
        a[dem] = i;
        b[dem] = j;
      }
    }
  dem = 0;
  for (long long i = 1; i <= k - 1; i++) {
    cout << 2 << " ";
    for (long long j = 1; j <= 2; j++) {
      dem++;
      cout << a[dem] << " " << b[dem] << " ";
    }
    cout << "\n";
  }
  cout << n * m - dem << " ";
  for (long long i = dem + 1; i <= n * m; i++)
    cout << a[i] << " " << b[i] << " ";
}
