/*
ID:billat11
LANG:C
TASK:namenum
*/
#include<iostream>
#include<cstdio>
#include<cstdarg>
#include<stdlib.h>
#include<cstring>
#include<cmath>
using namespace std;
const int Len=402;//int 6
int c[Len+1],d[Len+1];
int xiao[Len+1],cf=0;
void addz(int a[],int b[])
{
memset(c,0,sizeof(c));
for(int i=0;i<Len;i++)//0 低位
{
c[i]=a[i]+b[i];
}
for(int i=0;i<Len;i++)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
return ;
}
void add1(int a[],int num)
{
memset(d,0,sizeof(d));
for(int i=0;i<=Len;i++)
d[i]=a[i];
d[0]=a[0]+num;
for(int i=0;i<Len;i++)
{
d[i+1]+=d[i]/10;
d[i]=d[i]%10;
}
return ;
}
void addx(int a[],int b[])
{
cf=0;
memset(xiao,0,sizeof(xiao));
for(int i=Len;i>=0;i--)
{
xiao[i]=a[i]+b[i];
}
for(int i=Len;i>0;i--)
{
xiao[i-1]+=xiao[i]/10;
xiao[i]=xiao[i]%10;
}
cf=xiao[0]/10;
xiao[0]=xiao[0]%10;
}
int cmp(int a[],int b[])
{
for(int i=0;i<=Len;i++)
{
if(a[i]!=b[i]) return (a[i]-b[i])/abs(a[i]-b[i]);
}
return 0;
}
void print(int a[])
{
int j;
for(j=Len;j>0&&!a[j];j--);
printf("%d",a[j]);
j--;
for(;j>=0;j--)
printf("%d",a[j]);
//cout<<endl;
}
void printx(int a[])
{
int j,i;
for(j=Len;(j>=0)&&(a[j]==0);j--);
for(i=0;i<=j;i++)
printf("%d",a[i]);
}
int main()
{
int n,k;
char as[Len+1],bs[Len+1];
int inta[Len+1],intb[Len+1];
while(scanf("%s %s",as,bs)==2)
{
int i,j,id,jd;
int lena=strlen(as);
int lenb=strlen(bs);
memset(inta,0,sizeof(inta));
memset(intb,0,sizeof(intb));
for(i=0;(i<lena)&&(as[i]!='.');i++);
for(id=0;id<i;id++)
inta[i-1-id]=as[id]-'0';
for(j=0;(j<lenb)&&(bs[j]!='.');j++);
for(jd=0;jd<j;jd++)
intb[j-1-jd]=bs[jd]-'0';
addz(inta,intb);
// print(c);
i++;
memset(inta,0,sizeof(inta));
memset(intb,0,sizeof(intb));
for(id=0;(i<lena)&&(id<=lena-1-i);id++)
{
inta[id]=as[i+id]-'0';
}
j++;
for(jd=0;(j<lenb)&&(jd<=lenb-1-j);jd++)
{
intb[jd]=bs[j+jd]-'0';
}
addx(inta,intb);
add1(c,cf);
print(d);
memset(inta,0,sizeof(inta));
if(cmp(xiao,inta)>0)
{
printf(".");
printx(xiao);
}
cout<<endl;
}
//system("pause");
return 0;
}