#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;
 }