#include <bits/stdc++.h>
using namespace std;
bool isPrime(long long n) {
  if (n <= 1) return false;
  if (n <= 3) return true;
  if (n % 2 == 0 || n % 3 == 0) return false;
  for (long long i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0) return false;
  return true;
}
long long nextPrime(long long N) {
  if (N <= 1) return 2;
  long long prime = N;
  bool found = false;
  while (!found) {
    prime++;
    if (isPrime(prime)) found = true;
  }
  return prime;
}
long long cl(long long n, long long d) { return (n + d - 1) / d; }
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long lcm(long long a, long long b) { return (a * b) / (gcd(a, b)); }
bool isPerSquare(long double a) {
  if (a < 0) return false;
  long long sr = sqrt(a);
  return (sr * sr == a);
}
long long exp(long long x, long long y, long long p) {
  x %= p;
  long long res = 1;
  while (y) {
    if (y % 2) res = (res * x % p) % p;
    x = (x * x) % p;
    y /= 2;
  }
  return res;
}
long long expo(long long x, long long y) {
  long long res = 1;
  while (y) {
    if (y % 2) res = (res * x % (long long)1000003) % (long long)1000003;
    x = (x * x) % (long long)1000003;
    y /= 2;
  }
  return res;
}
long long add(long long a, long long b) {
  return (a % (long long)1000003 + b % (long long)1000003 +
          (long long)1000003) %
         (long long)1000003;
}
long long sub(long long a, long long b) {
  return (a % (long long)1000003 - b % (long long)1000003 +
          (long long)1000003) %
         (long long)1000003;
}
long long mul(long long a, long long b) {
  return ((a % (long long)1000003) * (b % (long long)1000003) +
          (long long)1000003) %
         (long long)1000003;
}
long long inv(long long x) { return expo(x, (long long)1000003 - 2); }
bool cmp(pair<long long, long long> a, pair<long long, long long> b) {
  if (a.first < b.first) {
    return true;
  } else if (a.first == b.first) {
    if (a.second < b.second) {
      return true;
    }
  }
  return false;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  long long t = 1;
  while (t--) {
    long long n, m, k;
    cin >> n >> m >> k;
    vector<pair<long long, long long>> ans;
    bool flag = true;
    for (long long i = 1; i <= n; i++) {
      if (flag) {
        flag = false;
        for (long long j = 1; j <= m; j++) {
          ans.push_back({i, j});
        }
      } else {
        flag = true;
        for (long long j = m; j > 0; j--) {
          ans.push_back({i, j});
        }
      }
    }
    long long total = k, pos = 0;
    for (long long i = 0; i < ans.size(); i += 2) {
      pos = i;
      if (k == 1) {
        break;
      }
      cout << 2 << " " << ans[i].first << " " << ans[i].second << " "
           << ans[i + 1].first << " " << ans[i + 1].second << "\n";
      k--;
    }
    cout << ans.size() - (total - 1) * 2 << " ";
    for (long long i = pos; i < ans.size(); i++) {
      cout << ans[i].first << " " << ans[i].second << " ";
    }
  }
}
