
#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct fraction
{
ll up,down;
};
ll gcd(ll a,ll b)
{
if(b==0) return a;
else return gcd(b,a%b);
}
fraction reduction(fraction result)
{
if(result.down<0)
{
result.down=-result.down;
result.up=-result.up;
}
if(result.up==0)
{
result.down=1;
}
else
{
int d=gcd(abs(result.up),(result.down));
result.down/=d;
result.up/=d;
}
return result;
}
fraction add(fraction a,fraction b)
{
fraction sum;
sum.up=a.up*b.down+a.down*b.up;
sum.down=a.down*b.down;
return reduction(sum);
}
fraction minu(fraction a,fraction b)
{
fraction ans;
ans.down=a.down*b.down;
ans.up=a.up*b.down-a.down*b.up;
reduction(ans);
return ans;
}
fraction multi(fraction a,fraction b)
{
fraction ans;
ans.down=a.down*b.down;
ans.up=a.up*b.up;
reduction(ans);
return ans;
}
fraction divide(fraction a,fraction b)
{
fraction ans;
ans.down=a.down*b.up;
ans.up=a.up*b.down;
reduction(ans);
return ans;
}
void showresult(fraction r)
{
r=reduction(r);
if(r.down==1)
{
if(r.up<0)
{
printf("(%lld)",r.up);
}
else
printf("%lld",r.up);
}
else if(abs(r.up)>r.down)
{
if(r.up<0)
{
printf("(%lld %lld/%lld)",r.up/r.down,abs(r.up)%r.down,r.down);
}
else
printf("%lld %lld/%lld",r.up/r.down,abs(r.up)%r.down,r.down);
}
else
{
if(r.up<0)
{
printf("(%lld/%lld)",r.up,r.down);
}
else
printf("%lld/%lld",r.up,r.down);
}
}
int main()
{
fraction a,b;
scanf("%lld/%lld",&a.up,&a.down);
scanf("%lld/%lld",&b.up,&b.down);
reduction(a);
reduction(b);
fraction ans1=add(a,b);
showresult(a);
printf(" + ");
showresult(b);
printf(" = ");
showresult(ans1);
printf("\n");
fraction ans2=minu(a,b);
showresult(a);
printf(" - ");
showresult(b);
printf(" = ");
showresult(ans2);
printf("\n");
fraction ans3=multi(a,b);
showresult(a);
printf(" * ");
showresult(b);
printf(" = ");
showresult(ans3);
printf("\n");
showresult(a);
printf(" / ");
showresult(b);
printf(" = ");
if(b.up==0)
{
printf("Inf\n");
}
else
{
fraction ans4=divide(a,b);
showresult(ans4);
}
}