#include <cctype>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <map>
#include <stack>
using namespace std;
#define M 1000+10
typedef struct TNode
{
int data;
TNode *lchild,*rchild;
} TNode,*BiTree;
int num[M];
BiTree& CreatBiTree(BiTree &T)
{
int n;
scanf("%d",&n);
if(n==-1)
{
T=NULL;
return T;
}
T=(BiTree)malloc(sizeof(TNode));
if(T)
T->data=n;
T->lchild=CreatBiTree(T->lchild);
T->rchild=CreatBiTree(T->rchild);
return T;
}
int maxx,minn;
void dfs(BiTree &T,int i)
{
num[i]+=T->data;
if(T->lchild==NULL||T->rchild==NULL)
{
if(maxx<i)maxx=i;
if(minn>i)minn=i;
}
if(T->lchild)
{
dfs(T->lchild,i-1);
}
if(T->rchild)
{
dfs(T->rchild,i+1);
}
}
void PreOrder(BiTree &T)
{
if(T)
{
printf("%d",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
int main()
{
BiTree T;
int kase=1;
while(1)
{
T=CreatBiTree(T);
printf("Case %d:\n",kase++);
//PreOrder(T);
memset(num,0,sizeof(num));
maxx=0;
minn=0xfffffff;
dfs(T,500);
//num[500]+=T->data;
printf("%d",num[minn]);
for(int i=minn+1; i<=maxx; i++)
printf(" %d",num[i]);
puts("");
puts("");
}
return 0;
}