#include <cstdio>
int calc_min_dist(int mn, int dist_table[], int tcount, int tpos[]) {
int min_dist = mn; // possible max+1
for (int i=0; i < tcount; ++i) {
const int dist = dist_table[tpos[i]];
if (dist < min_dist)
min_dist = dist;
}
return min_dist;
}
int main(int argc, const char* argv[]) {
int m, n, tcount, nm;
if (scanf("%d %d %d\n", &n, &m, &tcount) < 3) {
return 1;
}
nm = n*m;
int dist_table[2][nm], i=0;
for (int y=0; y<n ; ++y) {
for (int x=0; x<m ; ++x) {
dist_table[0][i] = x*n+y;
dist_table[1][i] = i;
i++;
}
}
int tpos[tcount], placed = 0;
tpos[0] = 0;
long pw=0, qw=0, even=0;
while (1) {
// check if current loop is end
if (tpos[placed] >= nm) { // end for
if (placed == 0)
break;
placed--; // pop to outer loop
} else {
if (placed < tcount-1) {
// dig into inner loop
placed++;
tpos[placed]=tpos[placed-1];
} else {
// deepest loop body
int pdist = calc_min_dist(nm, dist_table[0], tcount, tpos);
int qdist = calc_min_dist(nm, dist_table[1], tcount, tpos);
if (pdist < qdist) {
pw++;
} else if (pdist > qdist) {
qw++;
} else {
even++;
}
}
}
tpos[placed]++; // next
}
printf("shape(%dx%d), tcount=%d ---> pwin:%ld, qwin:%ld, even:%ld\n", n, m, tcount, pw, qw, even);
main(argc, argv); // dirty loop trick
}
I2luY2x1ZGUgPGNzdGRpbz4KCmludCBjYWxjX21pbl9kaXN0KGludCBtbiwgaW50IGRpc3RfdGFibGVbXSwgaW50IHRjb3VudCwgaW50IHRwb3NbXSkgewogIGludCBtaW5fZGlzdCA9IG1uOyAvLyBwb3NzaWJsZSBtYXgrMQogIGZvciAoaW50IGk9MDsgaSA8IHRjb3VudDsgKytpKSB7CiAgICBjb25zdCBpbnQgZGlzdCA9IGRpc3RfdGFibGVbdHBvc1tpXV07CiAgICBpZiAoZGlzdCA8IG1pbl9kaXN0KQogICAgICBtaW5fZGlzdCA9IGRpc3Q7CiAgfQogIHJldHVybiBtaW5fZGlzdDsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkgewogIGludCBtLCBuLCB0Y291bnQsIG5tOwogIGlmIChzY2FuZigiJWQgJWQgJWRcbiIsICZuLCAmbSwgJnRjb3VudCkgPCAzKSB7CiAgICByZXR1cm4gMTsKICB9CiAgbm0gPSBuKm07CgogIGludCBkaXN0X3RhYmxlWzJdW25tXSwgaT0wOwogIGZvciAoaW50IHk9MDsgeTxuIDsgKyt5KSB7CiAgICBmb3IgKGludCB4PTA7IHg8bSA7ICsreCkgewogICAgICBkaXN0X3RhYmxlWzBdW2ldID0geCpuK3k7CiAgICAgIGRpc3RfdGFibGVbMV1baV0gPSBpOwogICAgICBpKys7CiAgICB9CiAgfQoKICBpbnQgdHBvc1t0Y291bnRdLCBwbGFjZWQgPSAwOwogIHRwb3NbMF0gPSAwOwoKICBsb25nIHB3PTAsIHF3PTAsIGV2ZW49MDsKICB3aGlsZSAoMSkgewogICAgLy8gY2hlY2sgaWYgY3VycmVudCBsb29wIGlzIGVuZAogICAgaWYgKHRwb3NbcGxhY2VkXSA+PSBubSkgeyAvLyBlbmQgZm9yCiAgICAgIGlmIChwbGFjZWQgPT0gMCkKICAgICAgICBicmVhazsKICAgICAgcGxhY2VkLS07IC8vIHBvcCB0byBvdXRlciBsb29wCiAgICB9IGVsc2UgewogICAgICBpZiAocGxhY2VkIDwgdGNvdW50LTEpIHsKICAgICAgICAvLyBkaWcgaW50byBpbm5lciBsb29wCiAgICAgICAgcGxhY2VkKys7CiAgICAgICAgdHBvc1twbGFjZWRdPXRwb3NbcGxhY2VkLTFdOwogICAgICB9IGVsc2UgewogICAgICAJLy8gZGVlcGVzdCBsb29wIGJvZHkKICAgICAgICBpbnQgcGRpc3QgPSBjYWxjX21pbl9kaXN0KG5tLCBkaXN0X3RhYmxlWzBdLCB0Y291bnQsIHRwb3MpOwogICAgICAgIGludCBxZGlzdCA9IGNhbGNfbWluX2Rpc3Qobm0sIGRpc3RfdGFibGVbMV0sIHRjb3VudCwgdHBvcyk7CgogICAgICAgIGlmIChwZGlzdCA8IHFkaXN0KSB7CiAgICAgICAgICBwdysrOwogICAgICAgIH0gZWxzZSBpZiAocGRpc3QgPiBxZGlzdCkgewogICAgICAgICAgcXcrKzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZXZlbisrOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgdHBvc1twbGFjZWRdKys7IC8vIG5leHQKICB9CgogIHByaW50Zigic2hhcGUoJWR4JWQpLCB0Y291bnQ9JWQgLS0tPiAgcHdpbjolbGQsIHF3aW46JWxkLCBldmVuOiVsZFxuIiwgbiwgbSwgdGNvdW50LCBwdywgcXcsIGV2ZW4pOwogIG1haW4oYXJnYywgYXJndik7IC8vICBkaXJ0eSBsb29wIHRyaWNrCn0=