#include <iostream> 
#include <numeric> 
 
struct fraccion { 
   int num, den; 
};

fraccion irreducible(fraccion f) { 
   int d = std::gcd(f.num, f.den); 
   return { f.num / d, f.den / d }; 
}

fraccion operator+(fraccion a, fraccion b) { 
   return irreducible({ a.num * b.den + a.den * b.num, a.den * b.den }); 
}

fraccion operator-(fraccion a, fraccion b) { 
   return irreducible({ a.num * b.den - a.den * b.num, a.den * b.den }); 
}

fraccion operator*(fraccion a, fraccion b) { 
   return irreducible({ a.num * b.num, a.den * b.den }); 
}

fraccion operator/(fraccion a, fraccion b) { 
   return irreducible({ a.num * b.den, a.den * b.num }); 
}

std::istream& operator>>(std::istream& in, fraccion& f) { 
   in >> f.num; 
   in.ignore( ); 
   in >> f.den; 
   return in; 
}

std::ostream& operator<<(std::ostream& out, fraccion f) { 
   out << f.num << "/" << f.den; 
   return out; 
}

int main( ) { 
   fraccion f1, f2; 
   std::cin >> f1 >> f2; 
 
   fraccion f3 = f1 + f2; 
   fraccion f4 = f1 - f2; 
   fraccion f5 = f1 * f2; 
   fraccion f6 = f1 / f2; 
 
   std::cout << f3 << "\n" 
             << f4 << "\n" 
             << f5 << "\n" 
             << f6 << "\n";
}
