#include<bits/stdc++.h>
using namespace std;
map<pair<int,int>,int> loc;
int p[100][2],vis[100];
int dx[6]={0,0,1,-1,1,-1};
int dy[6]={1,-1,0,0,-1,1};
int a,b,c,cnt,ans,ansp;
inline bool check(int x, int y){
	if (loc.find(make_pair(x,y))!=loc.end() && vis[loc[make_pair(x,y)]]) return 1;
	return 0;
}
void dfs(int t, int sum){
	if (sum+cnt-t+1<ans) return;
	if (t>cnt){
		// if (sum==12){
			// for (int i=1; i<=cnt; i++) printf("%d ",vis[i]); puts("");
		// }
		if (sum>ans) ans=sum,ansp=1;
		else if (sum==ans) ansp++;
		return;
	}
	dfs(t+1,sum);

	bool flag=0;
	for (int i=0; i<6; i++) flag|=check(p[t][0]+dx[i],p[t][1]+dy[i]);
	if (!flag){
		vis[t]=1;
		dfs(t+1,sum+1);
		vis[t]=0;
	}
}
int query(int x, int y){ return loc[make_pair(x,y)]; }
int main(){
	scanf("%d%d%d",&a,&b,&c);
	for (int i=-a*2+1; i<=a*2-1; i++)
		for (int j=-b*2+1; j<=b*2-1; j++){
			if (i%2==0 && j%2==0) continue;
			// printf("==>%d %d\n",i,j);
			if (-c*2+1<=i+j && i+j<=c*2-1) loc[make_pair(i,j)]=++cnt,p[cnt][0]=i,p[cnt][1]=j;
		}
	// printf("%d %d %d %d %d %d\n",query(-1,0),query(-1,1),query(0,-1),query(0,1),query(1,-1),query(1,1));
	// for (int i=1; i<=cnt; i++) printf("%d %d\n",p[i][0],p[i][1]);
	printf("==>%d\n",cnt);
	dfs(1,0);
	printf("%d %d\n",ans,ansp);
	return 0;
}