#include <bits/stdc++.h>
using namespace std;
const int MAXN = 60;
int n, m, k;
int penalty = 0;
vector<vector<pair<int, int> > > moves;
vector<pair<int, int> > dist[MAXN * 2];
void print(pair<int, int> p) {
  cout << "(" << p.first << "," << p.second << ")";
}
void print(vector<pair<int, int> > v) {
  int sz = (int)v.size();
  for (int i = 0; i < sz; i++) {
    print(v[i]);
    cout << " \n"[i == sz - 1];
  }
}
void path(int a, int b) {
  vector<pair<int, int> > v;
  for (int i = 1; i <= a; i++) {
    v.push_back(pair<int, int>(i, 1));
  }
  for (int j = 2; j <= b; j++) {
    v.push_back(pair<int, int>(a, j));
  }
  penalty += v.size();
  moves.push_back(v);
}
int main(void) {
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      dist[i + j - 1].push_back(pair<int, int>(i, j));
    }
  }
  for (int i = 1; i < n + m; i++) sort(dist[i].begin(), dist[i].end());
  int ind = 1, ind2 = (int)dist[1].size() - 1;
  while (k--) {
    path(dist[ind][ind2].first, dist[ind][ind2].second);
    ind2--;
    if (ind2 < 0) {
      ind++;
      ind2 = (int)dist[ind].size() - 1;
    }
  }
  cout << penalty << "\n";
  for (int i = (int)moves.size() - 1; i >= 0; i--) print(moves[i]);
  return 0;
}
