#pragma GCC optimize("Ofast,unroll-loops") #include using namespace std; using ll = long long; using i128 = __int128; #include using namespace std; template using vec = vector; template using vec2 = vec>; template using vec3 = vec>; template using vec4 = vec>; template using vec5 = vec>; #define VEC(T, a, ...) vec a(__VA_ARGS__) #define VEC2(T, a, n, ...) vector a(n, vec(__VA_ARGS__)); #define VEC3(T, a, n, m, ...) \ vector a(n, vector(m, vec(__VA_ARGS__))); #define VEC4(T, a, n, m, l, ...) \ vector a(n, vector(m, vector(l, vec(__VA_ARGS__)))); #define all(a) (a).begin(), (a).end() #define len(a) (int)a.size() // https://cpprefjp.github.io/lang/cpp11/variadic_macros.html // https://trap.jp/post/1224/ #define eval_0(a, ...) a #define eval_1(a, b, ...) b #define eval_2(a, b, c, ...) c #define eval_3(a, b, c, d, ...) d #define eval_4(a, b, c, d, e, ...) e #define eval_5(a, b, c, d, e, f, ...) f #define eval_6(a, b, c, d, e, f, g, ...) g #define rep(t) for (int __ = 0; __ < t; __++) #define FOR_1(i, n) for (int i = 0; i < n; i++) #define FOR_2(i, a, b) for (ll i = a; i < b; i++) #define FOR_3(i, a, b, c) for (ll i = a; i < b; i += c) #define FOR(...) \ eval_4(__VA_ARGS__, FOR_3, FOR_2, FOR_1, rep)(__VA_ARGS__) #define FORR_1(i, n) for (int i = n; i-- > 0;) #define FORR_2(i, a, b) for (ll i = b; i-- > a;) #define FORR_3(i, a, b, c) for (ll i = b - 1; i >= a; i -= c) #define FORR(...) \ eval_4(__VA_ARGS__, FORR_3, FORR_2, FORR_1)(__VA_ARGS__) #define loop while (1) #define pb push_back #define eb emplace_back #include using namespace std; void enable_fast_io() { ios::sync_with_stdio(0); cin.tie(0); } template T max(const vec &a) { return *max_element(all(a)); } template T min(const vec &a) { return *min_element(all(a)); } template T sum(const vec &a) { // return accumulate(all(a), 0ll); return accumulate(all(a), T(0)); } template bool chmax(T &a, const U &b) { return b > a ? a = b, 1 : 0; } template bool chmin(T &a, const U &b) { return b < a ? a = b, 1 : 0; } #define iter_1(a, A) for (auto &&a : A) #define iter_2(a, b, A) for (auto &&[a, b] : A) #define iter_3(a, b, c, A) for (auto &&[a, b, c] : A) #define iter_4(a, b, c, d, A) for (auto &&[a, b, c, d] : A) #define iter_5(a, b, c, d, e, A) \ for (auto &&[a, b, c, d, e] : A) #define iter(...) \ eval_6(__VA_ARGS__, iter_5, iter_4, iter_3, iter_2, iter_1)( \ __VA_ARGS__ \ ) #include using namespace std; template istream &operator>>(istream &in, pair &p) { return in >> p.first >> p.second; } #include using namespace std; template ostream &operator<<(ostream &out, pair &p) { out << p.first << ' ' << p.second; return out; } template void read_tup(istream &in, T &x) { if constexpr (tuple_size::value > k) { in >> get(x); read_tup(in, x); } } template istream &operator>>(istream &in, tuple &x) { read_tup(in, x); return in; } template void out_tup(ostream &out, T &x) { if constexpr (tuple_size::value > k) { if constexpr (k > 0) { out << ' '; } out << get(x); out_tup(out, x); } } template ostream &operator<<(ostream &out, tuple &x) { out_tup(out, x); return out; } #include using namespace std; template auto operator>>(istream &in, vec &a) -> istream & { iter(x, a) in >> x; return in; } template auto operator<<(ostream &out, vec a) -> ostream & { FOR(i, len(a)) { if (i) { out << ' '; } out << a[i]; } return out; } // more than 1d template auto operator<<(ostream &out, vec2 a) -> ostream & { iter(x, a) out << x << '\n'; return out; } #include using namespace std; template void in(T &...a) { (cin >> ... >> a); } #include using namespace std; template void out(T a, U... b) { cout << a; ((cout << ' ' << b), ...); cout << '\n'; } #include using namespace std; template using max_queue = priority_queue; #include using namespace std; template using min_queue = priority_queue, greater>; #include using namespace std; template T pop(queue &q) { T v = q.front(); q.pop(); return v; } template T pop(deque &q) { T v = q.front(); q.pop_front(); return v; } template T pop(vec &q) { T v = q.back(); q.pop_back(); return v; } template T pop(max_queue &q) { T v = q.top(); q.pop(); return v; } template T pop(min_queue &q) { T v = q.top(); q.pop(); return v; } // define yes/no #define yesno(y, n) \ void y(bool f = 1) { out(f ? #y : #n); } \ void n(bool f = 1) { y(!f); } yesno(yes, no); yesno(Yes, No); yesno(YES, NO); yesno(first, second); yesno(First, Second); yesno(possible, impossible); yesno(Possible, Impossible); yesno(POSSIBLE, IMPOSSIBLE); yesno(alice, bob); yesno(Alice, Bob); yesno(takahashi, aoki); yesno(Takahashi, Aoki); void solve(); int main() { enable_fast_io(); int t = 1; // in(t); rep(t) solve(); } // #include template using Vec3D = tuple; template Vec3D cross(const Vec3D &v0, const Vec3D &v1) { auto &[x0, y0, z0] = v0; auto &[x1, y1, z1] = v1; auto x2 = y0 * z1 - z0 * y1; auto y2 = z0 * x1 - x0 * z1; auto z2 = x0 * y1 - y0 * x1; return {x2, y2, z2}; } void solve() { Vec3D v0, v1; in(v0, v1); out(cross(v0, v1)); }