#include <bits/stdc++.h>
using namespace std;
const int INF = (int)1e9 + 1;
const long long INFLL = (long long)2e18 + 1;
const long long MOD = (long long)1e9 + 7;
int bpow(int a, int n) {
  int res = 1;
  for (; n; n >>= 1, a *= a)
    if (n & 1) res *= a;
  return res;
}
long long gcd(long long a, long long b) { return a ? gcd(b % a, a) : b; }
int lcm(int a, int b) { return a / gcd(a, b) * b; }
int gcdex(int a, int b, int& x, int& y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return b;
  }
  int x1, y1;
  int d = gcdex(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return d;
}
struct pt {
  double x, y;
  pt(double x = 0, double y = 0) : x(x), y(y) {}
};
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int rand() { return uniform_int_distribution<int>()(rng); }
int random(int l, int r) { return uniform_int_distribution<int>(l, r)(rng); }
vector<vector<int> > g;
vector<char> used;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  long long n, m, k;
  cin >> n >> m >> k;
  long long on = n, om = m, ok = k;
  if (n * m * 2 % k != 0) {
    cout << "NO" << '\n';
    return 0;
  } else {
    if (k % 2 == 0) {
      k /= 2;
      long long gn = gcd(n, k);
      n /= gn;
      k /= gn;
      m /= k;
    } else {
      long long gn = gcd(n, k);
      n /= gn;
      k /= gn;
      m /= k;
      if (n * 2 <= on)
        n *= 2;
      else if (m * 2 <= om)
        m *= 2;
      else {
        cout << "NO" << '\n';
        return 0;
      }
    }
    cout << "YES" << '\n';
    cout << 0 << " " << 0 << '\n';
    cout << n << " " << 0 << '\n';
    cout << 0 << " " << m << '\n';
  }
  return 0;
}
