#include <bits/stdc++.h>
using namespace std;
class C {
 public:
  int A[512][512];
  C(){};
  void Fill(int N, int M, int K) {
    memset(A, -1, sizeof(A));
    fill(0, 0, N, M, 1, K);
  }
  vector<vector<pair<int, int> > > R(int N, int M, int K) {
    Fill(N, M, K);
    vector<vector<pair<int, int> > > r;
    vector<pair<int, int> > rr;
    for (int i = 0; i < N; i++) {
      if (i % 2 == 0) {
        for (int j = 0; j < M; j++) {
          if (A[i][j] == K || K == 1) {
            rr.push_back(make_pair(i + 1, j + 1));
          } else {
            r.push_back(rr);
            rr.clear();
            rr.push_back(make_pair(i + 1, j + 1));
            K--;
          }
        }
      } else {
        for (int j = M - 1; j >= 0; j--) {
          if (A[i][j] == K || K == 1) {
            rr.push_back(make_pair(i + 1, j + 1));
          } else {
            r.push_back(rr);
            rr.clear();
            rr.push_back(make_pair(i + 1, j + 1));
            K--;
          }
        }
      }
    }
    r.push_back(rr);
    return r;
  }

 private:
  void fill(int x, int y, int N, int M, bool dir, int k) {
    int cnt = 0;
    for (int i = 0; i < N; i++) {
      if (i % 2 == 0) {
        for (int j = 0; j < M; j++) {
          A[i][j] = k;
          cnt++;
          if (cnt == 2 && k > 1) {
            k--;
            cnt = 0;
          }
        }
      } else {
        for (int j = M - 1; j >= 0; j--) {
          A[i][j] = k;
          cnt++;
          if (cnt == 2 && k > 1) {
            k--;
            cnt = 0;
          }
        }
      }
    }
  }
};
int N, M, K;
int main() {
  C *Inst = new C();
  cin >> N >> M >> K;
  vector<vector<pair<int, int> > > X = Inst->R(N, M, K);
  for (int i = 0; i < X.size(); i++) {
    cout << X[i].size();
    for (int j = 0; j < X[i].size(); j++) {
      printf(" %d %d", X[i][j].first, X[i][j].second);
    }
    puts("");
  }
}
