#include <iostream>
using namespace std;
int carry=0;
int FindDotPosition(char array[])
{   int DotPosition=strlen(array);
    for(int temp=0; array[temp]!='\0'; temp++)
    {       
            if( array[temp]=='.')
            DotPosition=temp;
    }return DotPosition;
}
void FillDot(char array[])
{
	if(FindDotPosition(array)==strlen(array))
		{array[strlen(array)]='.';array[strlen(array)+1]='\0';}
}
void Adder(char X[],char Y[],char Result[],int LongestDecimal,int LongestInteger)
{   
	for(int i=LongestDecimal+LongestInteger; i >=0; i--)
    {
		if(X[i]=='.')Result[i]='.';
		else if(X[i-1]=='.'&&(((int)X[i]+(int)Y[i]+(int)carry-(int)48)>=(int)58))
			{Result[i]=((int)X[i]+(int)Y[i]+(int)carry-(int)48-(int)10);Result[i-1]='.';carry=1;i--;}
		else if(X[i-1]=='.')
            {Result[i]=((int)X[i]+(int)Y[i]+(int)carry-(int)48);Result[i-1]='.';carry=0;i--;}
        else if(((int)X[i]+(int)Y[i]+(int)carry-(int)48)>=(int)58)  
            {Result[i]=((int)X[i]+(int)Y[i]+(int)carry-(int)48-(int)10);carry=1;}
        else 
            {Result[i]=((int)X[i]+(int)Y[i]+(int)carry-(int)48);carry=0;}   
	}       
}
void Subtraction(char X[],char Y[],char Result[],int LongestDecimal,int LongestInteger)
{
	int Borrow=0;cout<<X[1]<<" "<<Y[1];
	for(int i=LongestDecimal+LongestInteger; i >=0; i--)
	{
		if(X[i]=='.')Result[i]='.';
		else if(X[i-1]=='.'&&((int)X[i]-(int)Borrow<(int)Y[i]))
			{Result[i]=(int)10+(int)X[i]-(int)Y[i]-(int)Borrow+(int)48;Result[i-1]='.';Borrow=1;i--;}
		else if(X[i-1]=='.')
			{Result[i]=(int)X[i]-(int)Y[i]-(int)Borrow+(int)48;Result[i-1]='.';Borrow=0;i--;}
		else if((int)X[i]-(int)Borrow<(int)Y[i])
			{Result[i]=(int)10+(int)X[i]-(int)Y[i]-(int)Borrow+(int)48;Borrow=1;}
		else
			{Result[i]=(int)X[i]-(int)Y[i]-(int)Borrow+(int)48;Borrow=0;cout<<Result[i];}
	}
}
int main()
{   for(;;){
    int n=0;
	char X[101]={0}, Y[101]={0}, Result[101]={0}, temp1[200], temp2[200], sign;
    cin>>X>>sign>>Y;
    cout<<endl<<X<<" "<<sign<<" "<<Y<<" = ";	
	FillDot(X);FillDot(Y);
	int LongestInteger=0, LongestDecimal=0;
    int DecimalOfX=strlen(X)-FindDotPosition(X)-1;
    int DecimalOfY=strlen(Y)-FindDotPosition(Y)-1;
    int IntegerOfX=strlen(X)-DecimalOfX-1;
    int IntegerOfY=strlen(Y)-DecimalOfY-1;
	     if(DecimalOfX>=DecimalOfY)
		 {		LongestDecimal=DecimalOfX;
                for(int i=0; i<(DecimalOfX-DecimalOfY); i++)
				{Y[strlen(Y)]='0';Y[strlen(Y)+1]='\0';}
		 }
		 else	
		 {
				LongestDecimal=DecimalOfY;
				for(int i=0; i<DecimalOfY-DecimalOfX; i++)
				{X[strlen(X)]='0';X[strlen(X)+1]='\0';}
		 }
		 if(IntegerOfX>IntegerOfY)
		 {	strcpy( temp1, Y);	LongestInteger=IntegerOfX;		
				for(int i=0; i<IntegerOfX-IntegerOfY; i++)
					{Y[i]='0';Y[i+1]='\0';}
				strcat(Y, temp1);
		 }
		 else	if(IntegerOfX<IntegerOfY)
		 {	strcpy( temp1, X);LongestInteger=IntegerOfY;
				for(int i=0; i<IntegerOfY-IntegerOfX; i++)
					{X[i]='0';X[i+1]='\0';}
				strcat(X, temp1);
		 }else if(IntegerOfX==IntegerOfY)LongestInteger=IntegerOfY;
		 if(sign=='+')
			Adder(X,Y,Result,LongestDecimal,LongestInteger);
		 else if (sign=='-')
		 {	
			for(int i=0;Y[i]>X[i]||X[i]>Y[i];i++)
			{
				if(Y[i]>X[i])
				{Subtraction(Y,X,Result,LongestDecimal,LongestInteger);temp2[0]='-';strcat(temp2, Result);}
				else Subtraction(X,Y,Result,LongestDecimal,LongestInteger);
			}
		}for(int i=0; Result[i]=='-'||Result[i]=='0';i++)
		 {
			 if(Result[i]=='0')Result[i]=1;
		}
		for(int i=strlen(Result)-1; Result[i]=='.'||Result[i]=='0';i--)
		 {
			 Result[i]=1;
		}cout<<Result;
	}
}
