#include <bits/stdc++.h>

using namespace std;

vector<int> add(vector<int> A, vector<int> B, int jin){
	vector<int> C;
	int t=jin;
	
	for (int i=0; i<A.size() || i<B.size(); i++){
		if (i < A.size()){
			t += A[i];
		} 
		
		if (i < B.size()){
			t += B[i];
		}
		
		C.push_back(t%10);
		t = t/10;
	}
	
	if (t == 1) C.push_back(t);
	
	return C;
}

int main(){
	string a, b;
	vector<int> A1, A2;
	vector<int> B1, B2;
	
	while(cin >> a >> b){
		// 算有几位小数位
		bool flag = false;
		int count_a = 0;
		int dot_a;
		for (int i=0; i<a.size(); i++){
			if (flag == true){
				count_a ++;
			}
			if (a[i] == '.'){
				dot_a = i;
				flag = true;
			} 
		}
		
		int count_b = 0;
		int dot_b;
		flag = false;
		for (int i=0; i<b.size(); i++){
			if (flag == true){
				count_b ++;
			}
			if (b[i] == '.') 
			{
				flag = true;
				dot_b = i;
			}
		}
		
		if (count_a < count_b){
			swap(a, b);
			swap(dot_a, dot_b);
			swap(count_a, count_b);
		}
		
		int add_zero = count_a - count_b;
		
		while(add_zero){
			b.push_back('0');
			add_zero--;
		}
		
//		cout << a << endl;
//		cout << b << endl;
		
		vector<int> A1, A2;
		vector<int> B1, B2;
		
		for (int i=dot_a-1; i>=0; i--){
			A1.push_back(a[i] - '0');
		}
		for (int i=dot_b-1; i>=0; i--){
			B1.push_back(b[i] - '0');
		}
		
		for (int i=a.size()-1; i>dot_a; i--){
			A2.push_back(a[i] - '0');
		}
		for (int i=b.size()-1; i>dot_b; i--){
			B2.push_back(b[i] - '0');
		}
		
		vector<int> C2 = add(A2, B2, 0);
		vector<int> C1;
		if (C2.size() > A2.size()){
			C1 = add(A1, B1, 1);
			C2.pop_back();
		}
		else{
			C1 = add(A1, B1, 0);
		}
		
		for (int i=C1.size()-1; i>=0; i--) cout << C1[i];
		cout << ".";
		for (int i=C2.size()-1; i>=0; i--) cout << C2[i];
		puts("");
	}
	
	return 0;
}