#include <iostream>
#include <cstring>
using namespace std;
const int maxn=100;
struct longfloat{
int integer[maxn];
int decimal[maxn];
int ilength;
int dlength;
longfloat(){
ilength=0;
dlength=0;
}
longfloat(string x){
ilength=0;
dlength=0;
int k=x.find('.');
for(int i=k-1;i>=0;i--){
integer[ilength++]=x[i]-'0';
}
for(int i=x.length()-1;i>k;i--){
decimal[dlength++]=x[i]-'0';
}
};
longfloat operator+ (longfloat y) {
longfloat r;
int carry=0;
int i=0;
int div;
if(dlength>y.dlength) {
div=dlength-y.dlength;
for(int i=y.dlength-1;i>=0;i--){
y.decimal[i+div]=y.decimal[i];
}
for(int i=0;i<div;i++) y.decimal[i]=0;
y.dlength+=div;
}
else {
div=y.dlength-dlength;
for(int i=dlength-1;i>=0;i--){
decimal[i+div]=decimal[i];
}
for(int i=0;i<div;i++) decimal[i]=0;
dlength+=div;
}
while(i<dlength && i<y.dlength){
r.decimal[r.dlength++]=decimal[i]+y.decimal[i]+carry;
if(r.decimal[i]>9){
r.decimal[i]-=10;
carry=1;
}
else carry=0;
i++;
}
if(i==dlength){
while(i<y.dlength){
r.decimal[r.dlength++]=y.decimal[i]+carry;
if(r.decimal[i]>9){
r.decimal[i]-=10;
carry=1;
}
else carry=0;
i++;
}
}
else {
while(i<dlength){
r.decimal[r.dlength++]=decimal[i]+carry;
if(r.decimal[i]>9){
r.decimal[i]-=10;
carry=1;
}
else carry=0;
i++;
}
}
//deal with integer
i=0;
while(i<ilength && i<y.ilength){
r.integer[i]=integer[i]+y.integer[i]+carry;
r.ilength++;
if(r.integer[i]>9){
r.integer[i]-=10;
carry=1;
}
else carry=0;
i++;
}
if(i==ilength){
while(i<y.ilength){
r.integer[r.ilength++]=y.integer[i]+carry;
if(r.integer[i]>9){
r.integer[i]-=10;
carry=1;
}
else carry=0;
i++;
}
}
else{
while(i<ilength) {
r.integer[r.ilength++]=integer[i]+carry;
if(r.integer[i]>9){
r.integer[i]-=10;
carry=1;
}
else carry=0;
i++;
}
}
if(carry==1) r.integer[r.ilength++]=1;
return r;
}
};
void outp(longfloat x){
for(int i=x.ilength-1;i>=0;i--){
cout<<x.integer[i];
}
cout<<'.';
for(int i=x.dlength-1;i>=0;i--){
cout<<x.decimal[i];
}
cout<<endl;
}
int main() {
string x,y;
while(cin>>x>>y){
outp(longfloat(x)+longfloat(y));
}
}