#include <bits/stdc++.h>
using namespace std;
int n, m, k;
int M[60][60];
int dx[] = {0, 1};
int dy[] = {1, 0};
std::vector<pair<int, int> > path;
int sum = 0;
void dfs(int ia, int ja) {
  M[ia][ja] = 1;
  path.push_back(make_pair(ia, ja));
  for (int i = 0; i < 2; i++) {
    if (ia + dx[i] > 0 && ia + dx[i] <= n && ja + dy[i] > 0 &&
        ja + dy[i] <= m && M[ia + dx[i]][ja + dy[i]] == 0) {
      dfs(ia + dx[i], ja + dy[i]);
    }
  }
  for (int i = 0; i < path.size(); i++) {
    if (i != 0) cout << " ";
    cout << "(" << path[i].first << "," << path[i].second << ")";
  }
  cout << endl;
  path.pop_back();
}
int main() {
  cin >> n >> m >> k;
  memset(M, -1, sizeof M);
  queue<pair<int, int> > fila;
  int c = 1;
  M[1][1] = 0;
  fila.push(make_pair(1, 1));
  while (!fila.empty() && c < k) {
    pair<int, int> p = fila.front();
    fila.pop();
    for (int i = 0; i < 2 && c < k; i++) {
      if (p.first + dx[i] > 0 && p.first + dx[i] <= n && p.second + dy[i] > 0 &&
          p.second + dy[i] <= m && M[p.first + dx[i]][p.second + dy[i]] == -1) {
        fila.push(make_pair(p.first + dx[i], p.second + dy[i]));
        M[p.first + dx[i]][p.second + dy[i]] = 0;
        c++;
        sum += abs(p.first + dx[i] - 1) + abs(p.second + dy[i] - 1) + 1;
      }
    }
  }
  cout << sum + 1 << endl;
  dfs(1, 1);
  return 0;
}
