#include <iostream>
using namespace std;
//实现string+1
void Add_1(string &s)
{
bool add=false;
for(int i=s.size()-1; i>=0; i--)
{
if(s[i]<'9')
{
add=true;
s[i]=s[i]+1;
for(int j=i+1; j<s.size(); j++)
s[j]='0';
break;
}
}
if(!add)
{
for(int i=0; i<s.size(); i++)
s[i]='0';
s='1'+s;
}
}
int main()
{
string s1,s2;
while(cin>>s1>>s2)
{
string z1,z2;
string x1,x2;
bool guo=false;
for(int i=0; i<s1.size(); i++)
{
if(s1[i]=='.')
guo=true;
if(!guo) //整数部分
z1=z1+s1[i];
else//小数部分
x1=x1+s1[i];
}
x1.erase(0,1);
guo=false;
for(int i=0; i<s2.size(); i++)
{
if(s2[i]=='.')
guo=true;
if(!guo) //整数部分
z2=z2+s2[i];
else//小数部分
x2=x2+s2[i];
}
x2.erase(0,1);
//整数部分
//对齐
int m=z2.size()-z1.size();
if(m>0)
{
for(int i=1; i<=m; i++)
{
z1='0'+z1;
}
}
m=z1.size()-z2.size();
if(m>0)
{
for(int i=1; i<=m; i++)
{
z2='0'+z2;
}
}
//进行计算
string z="";
bool jin=false;
for(int i=z1.size()-1; i>=0; i--)
{
char t;
if(jin)
t=(z1[i]+z2[i]-'0'-'0'+1)%10+'0';
else
t=(z1[i]+z2[i]-'0'-'0')%10+'0';
z=t+z;
if(jin)
jin=(z1[i]+z2[i]-'0'-'0'+1)>=10?true:false;
else
jin=(z1[i]+z2[i]-'0'-'0')>=10?true:false;
}
if(jin)
z='1'+z;
//小数部分
//对齐
if(x1.size()<x2.size())
{
for(int i=x1.size(); i<x2.size(); i++)
x1=x1+'0';
}
else
{
for(int i=x2.size(); i<x1.size(); i++)
x2=x2+'0';
}
//进行计算
string x="";
jin=false;
for(int i=x1.size()-1; i>=0; i--)
{
char t;
if(jin)
t=(x1[i]+x2[i]-'0'-'0'+1)%10+'0';
else
t=(x1[i]+x2[i]-'0'-'0')%10+'0';
x=t+x;
if(jin)
jin=(x1[i]+x2[i]-'0'-'0'+1)>=10?true:false;
else
jin=(x1[i]+x2[i]-'0'-'0')>=10?true:false;
}
if(jin)
Add_1(z);
cout<<z<<"."<<x<<endl;
}
return 0;
}