aa
#include<iostream>
using namespace std;
class CFraction
{
private:
int fz, fm;
public:
CFraction() {};
CFraction(int fz_val, int fm_val)
{
fz = fz_val;
fm = fm_val;
}
int getGCD()
{
int temp, r, a, b;
a = fz;
b = fm;
if (a < 0)
a = -a;
if (b < 0)
b = -b;
if (a < b)
{
temp = a;
a = b;
b = temp;
}
for (; ; )
{
r = a % b;
if (r == 0)
return b;
a = b;
b = r;
}
}
CFraction add(const CFraction &r) {
int n;
CFraction a;
a.fz = fz * r.fm + r.fz * fm;
a.fm = fm * r.fm;
n = a.getGCD();
a.fz = a.fz / n;
a.fm = a.fm / n;
return a;
}
CFraction sub(const CFraction &r) {
CFraction a;
int n;
a.fz = fz * r.fm - r.fz*fm;
a.fm = fm * r.fm;
n = a.getGCD();
a.fz = a.fz / n;
a.fm = a.fm / n;
return a;
}
CFraction mul(const CFraction &r) {
int n;
CFraction a;
a.fz = fz * r.fz;
a.fm = fm * r.fm;
n = a.getGCD();
a.fz = a.fz / n;
a.fm = a.fm / n;
return a;
}
CFraction div(const CFraction &r) {
int n;
CFraction a;
a.fz = fz * r.fm;
a.fm = fm * r.fz;
n = a.getGCD();
a.fz = a.fz / n;
a.fm = a.fm / n;
return a;
}
void print() {
cout << fz << "/" << fm << endl;
}
};
int main() {
int t;
cin >> t;
int fz, fm;
CFraction cc;
while (t--) {
cin >> fz;
cin.get();
cin >> fm;
CFraction aa(fz, fm);
cin >> fz;
cin.get();
cin >> fm;
CFraction bb(fz, fm);
cc = aa.add(bb);
cc.print();
cc = aa.sub(bb);
cc.print();
cc = aa.mul(bb);
cc.print();
cc = aa.div(bb);
cc.print();
cout << endl;
}
return 0;
}