#include<iostream>
#include<string>
using namespace std;
string zhengshu(string a){
string x=a.substr(0,a.find('.'));
return x;
}
string xiaoshu(string a){
string y=a.substr(a.find('.')+1,a.size()-a.find('.'));
return y;
}
void xiaoshuplus(string& res,int& carry,string ya,string yb){
int size=max(ya.size(),yb.size());
while(ya.size()<size){
ya.push_back('0');
}
while(yb.size()<size){
yb.push_back('0');
}
res.resize(size);
carry=0;
for(int i=size-1;i>=0;--i){
if(ya[i]+yb[i]-'0'+carry>'9'){
res[i]=ya[i]+yb[i]-'0'+carry-10;
carry=1;
}
else{
res[i]=ya[i]+yb[i]-'0'+carry;
carry=0;
}
}
}
void zhengshuplus(string& res,int& carry,string x1,string x2){
res.clear();
for(int i=x1.size()-1,j=x2.size()-1;i>=0||j>=0||carry==1;--i,--j){
if(i>=0&&j>=0){
if(x1[i]+x2[j]-'0'+carry>'9'){
res.insert(res.begin(),x1[i]+x2[j]-'0'+carry-10);
carry=1;
}
else{
res.insert(res.begin(),x1[i]+x2[j]-'0'+carry);
carry=0;
}
}
else if(i>=0&&j<0){
if(x1[i]+carry>'9'){
carry=1;
res.insert(res.begin(),x1[i]+carry-10);
}
else{
res.insert(res.begin(),x1[i]+carry);
carry=0;
}
}
else if(i<0&&j>=0){
if(x2[j]+carry>'9'){
carry=1;
res.insert(res.begin(),x2[j]+carry-10);
}
else{
res.insert(res.begin(),x2[j]+carry);
carry=0;
}
}
//处理最后的进位
else{
res.insert(res.begin(),'1');
carry=0;
}
}
}
int main(){
string a;
string b;
cin>>a>>b;
string x1=zhengshu(a);
string x2=zhengshu(b);
string y1=xiaoshu(a);
string y2=xiaoshu(b);
string res;
int carry;
xiaoshuplus(res,carry,y1,y2);
string y=res;
zhengshuplus(res,carry,x1,x2);
cout<<res<<'.'+y<<endl;
}