#include<iostream>
#include<cstring>
#define NUM 25
using namespace std;
typedef long long ll;
ll res[NUM][NUM][NUM];
struct cno {
ll a;
ll b;
ll c;
};
ll w(ll a, ll b, ll c) {
if (a <= 0 || b <= 0 || c <= 0) return 1;
else if (res[a][b][c] != 0)return res[a][b][c];
else if (a < b && b < c) res[a][b][c] = w(a, b, c - 1) + w(a, b - 1, c - 1) - w(a, b - 1, c);
else if (a > 20 || b > 20 || c > 20) {
res[a][b][c] = w(20, 20, 20);
return res[a][b][c];
}
else {
res[a][b][c] = w(a - 1, b, c) + w(a - 1, b - 1, c) + w(a - 1, b, c - 1) - w(a - 1, b - 1, c - 1);
return res[a][b][c];
}
}
int main() {
int cnt = 0;
memset(res, 0, sizeof(res));
cno cn[NUM];
while (1) {
cin >> cn[cnt].a >> cn[cnt].b >> cn[cnt].c;
if (cn[cnt].a > 20)cn[cnt].a = 21;
if (cn[cnt].b > 20)cn[cnt].b = 21;
if (cn[cnt].c > 20)cn[cnt].c = 21;
if (cn[cnt].a == -1 && cn[cnt].b == -1 && cn[cnt].c == -1)break;
cnt++;
}
for (int i = 0; i < cnt; i++) {
cout << "w(" << cn[i].a << ", " << cn[i].b << ", " << cn[i].c << ") = " << w(cn[i].a, cn[i].b, cn[i].c) << endl;
}
}