#include<stdio.h>
#include<string.h>
int main()
{
char a[500],b[500];
int i,tb,ta;
while(scanf("%s %s",a,b)==2)//输入两个数
{
ta=strlen(a);
for(i=0;i<strlen(a);i++)//找出小数点的位置
if(a[i]=='.')
{
ta=i;break;
}
tb=strlen(b);
for(i=0;i<strlen(b);i++)
if(b[i]=='.')
{
tb=i;break;
}
int ia=ta+1,ib=tb+1,zhs[500],xs[500],c,j,e;
memset(xs,0,sizeof(xs));//表示小数点后的数字
memset(zhs,0,sizeof(zhs));//表示整数
ta--;tb--;
i=j=0;
while(1)//计算整数的和
{
if(ta>=0)
{zhs[i]+=a[ta]-'0';ta--;}
if(tb>=0)
{zhs[i]+=b[tb]-'0';tb--;}
i++; //i表示整数位的长度
if(ta<0&&tb<0)
break;
}
while(1)//计算出小数点的数之和
{
if(ia<strlen(a))
{xs[j]+=a[ia]-'0';ia++;}
if(ib<strlen(b))
{xs[j]+=b[ib]-'0';ib++;}
j++; //j表示小数点后数的长度
if(ia>=strlen(a)&&ib>=strlen(b))
break;
}
c=0;
for(e=j-1;e>=0;e--)//开始进位
{
xs[e]+=c;
c=xs[e]/10;
xs[e]%=10;
}
for(e=0;e<i;e++)
{
zhs[e]+=c;
c=zhs[e]/10;
zhs[e]%=10;
}
if(c)
{
zhs[e]+=c;i++;
}
for(e=j-1;e>=0;e--)//去掉无意义的零
if(xs[e])
break;
else
j--;
for(e=i-1;e>=0;e--)
if(zhs[e])
break;
else
i--;
for(e=i-1;e>=0;e--)//输出两数字的和
printf("%d",zhs[e]);
if(j>0) //如果小数点后有数字则输出小数点
printf(".");
for(e=0;e<j;e++)
printf("%d",xs[e]);
if(j<=0&&i<=0)//当两个数都为零时上面的不会输出,则输出零
printf("0");
printf("\n");
}
return 0;
}