#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool rd(T &ret) {
  char c;
  int sgn;
  if (c = getchar(), c == EOF) return 0;
  while (c != '-' && (c < '0' || c > '9')) c = getchar();
  sgn = (c == '-') ? -1 : 1;
  ret = (c == '-') ? 0 : (c - '0');
  while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');
  ret *= sgn;
  return 1;
}
template <class T>
inline void pt(T x) {
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  if (x > 9) pt(x / 10);
  putchar(x % 10 + '0');
}
const int N = 55;
const int inf = 1e9;
const double eps = 1e-4;
int n, m, k;
struct Node {
  int x, y, v;
  bool operator<(const Node &a) const { return v < a.v; }
};
void work(Node a) {
  for (int i = 1; i <= a.x; i++) printf("(%d,1) ", i);
  for (int i = 2; i <= a.y; i++) printf("(%d,%d) ", a.x, i);
  puts("");
}
vector<Node> s;
int main() {
  rd(n);
  rd(m);
  rd(k);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      s.push_back({i, j, i + j});
    }
  sort(s.begin(), s.end());
  s.erase(s.begin() + k, s.end());
  int ans = 0;
  for (auto i : s) ans += i.v - 1;
  cout << ans << endl;
  reverse(s.begin(), s.end());
  for (auto i : s) work(i);
  return 0;
}
