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