#include "bits/stdc++.h" using namespace std; using ll = long long; const double pi = acos(-1); #define FOR(i,a,b) for (ll i=(a),__last_##i=(b);i<__last_##i;i++) #define RFOR(i,a,b) for (ll i=(b)-1,__last_##i=(a);i>=__last_##i;i--) #define REP(i,n) FOR(i,0,n) #define RREP(i,n) RFOR(i,0,n) #define __GET_MACRO3(_1, _2, _3, NAME, ...) NAME #define rep(...) __GET_MACRO3(__VA_ARGS__, FOR, REP)(__VA_ARGS__) #define rrep(...) __GET_MACRO3(__VA_ARGS__, RFOR, RREP)(__VA_ARGS__) template ostream& operator<<(ostream& os, const vector& v) { REP(i, v.size()) { if (i)os << " "; os << v[i]; }return os; } template ostream& operator<<(ostream& os, const vector>& v) { REP(i, v.size()) { if (i)os << endl; os << v[i]; }return os; } const ll INF = LLONG_MAX; ll MOD = 1000000007; ll _MOD = 1000000009; double EPS = 1e-10; #define int long long inline void my_io() { std::ios::sync_with_stdio(false); std::cin.tie(0); cout << fixed << setprecision(16); //cout << setprecision(10) << scientific << ans << endl; } //最大公約数 ll gcd(ll m, ll n) { if (m < n) { swap(m, n); } if (n == 0) { return m; } return gcd(n, m % n); } signed main() { ll na, nb; cin >> na; vector a(na); ll ca = 0; REP(i, na) { cin >> a[i]; if (a[i] < 0) { ca++; a[i] = -a[i]; } } cin >> nb; vector b(nb); ll cb = 0; REP(i, nb) { cin >> b[i]; if (b[i] < 0) { cb++; b[i] = -b[i]; } } ll pa = a[0]; ll qa = 1; FOR(i, 1, na) { qa = qa * a[i]; ll x = gcd(pa, qa); pa = pa / x; qa = qa / x; } ll pb = b[nb - 1]; ll qb = 1; RREP(i, nb - 1) { swap(pb, qb); pb = pb * b[i]; ll x = gcd(pb, qb); pb = pb / x; qb = qb / x; } ll p = pa * qb; ll q = qa * pb; ll x = gcd(p, q); p = p / x; q = q / x; if (ca % 2 != cb % 2) { p = -p; } cout << p << " " << q << endl; }