#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long LL;
LL gcd(LL a, LL b)
{
if(b!=0) return gcd(b,a%b);
else return a;
}
struct fraction{
LL numer;
LL denom;
};
fraction simp(fraction a)
{
LL common = gcd(abs(a.numer),a.denom);
a.numer/=common;
a.denom/=common;
return a;
}
fraction add(fraction a,fraction b)
{
a = simp(a);
b = simp(b);
fraction ans;
ans.denom = a.denom*b.denom;
ans.numer = a.numer*b.denom+b.numer*a.denom;
ans = simp(ans);
return ans;
}
fraction Minus(fraction a,fraction b)
{
b.numer = -b.numer;
return add(a,b);
}
fraction multi(fraction a,fraction b)
{
a = simp(a);
b = simp(b);
fraction ans;
ans.numer = a.numer*b.numer;
ans.denom = a.denom*b.denom;
ans = simp(ans);
return ans;
}
fraction chu(fraction a, fraction b)
{
a=simp(a);
b=simp(b);
if(b.numer<0){
b.numer=-b.numer;
b.denom = -b.denom;
}
fraction c;
c.numer = a.numer*b.denom;
c.denom = a.denom*b.numer;
c=simp(c);
return c;
}
void show(fraction a)
{
a=simp(a);//这句话可别忘记了
if(a.numer==0){
printf("0");
return;
}
bool flag=false;
if(a.numer<0){
flag = true;
printf("(-");
a.numer=-a.numer;
}
if(a.numer>=a.denom){
printf("%lld",a.numer/a.denom);
if(a.numer%a.denom!=0){
printf(" %lld/%lld",a.numer%a.denom,
a.denom);
}
}
else{
printf("%lld/%lld",a.numer,
a.denom);
}
if(flag) printf(")");
}
int main()
{
fraction a,b;
scanf("%lld/%lld %lld/%lld",&a.numer,&a.denom,
&b.numer,&b.denom);
fraction addAns = add(a,b);
show(a);
printf(" + ");
show(b);
printf(" = ");
show(addAns);
printf("\n");
fraction minusAns = Minus(a,b);
show(a);
printf(" - ");
show(b);
printf(" = ");
show(minusAns);
printf("\n");
fraction c = multi(a,b);
show(a);
printf(" * ");
show(b);
printf(" = ");
show(c);
printf("\n");
show(a);
printf(" / ");
show(b);
printf(" = ");
if(b.numer==0) printf("Inf");
else show(chu(a,b));
printf("\n");
return 0;
}