#include #include using namespace std; using namespace atcoder; #define rep(i, n) REP(i, 0, n) #define REP(i, s, e) for (ll i = (s); i < (ll)(e); i++) #define repr(i, n) REPR(i, n, 0) #define REPR(i, s, e) for (ll i = (ll)(s - 1); i >= (ll)(e); i--) #define all(r) r.begin(), r.end() #define rall(r) r.rbegin(), r.rend() typedef long long ll; typedef vector vi; typedef vector vl; template bool chmax(T& a, const U& b) { if (a >= b) return false; a = b; return true; } template bool chmin(T& a, const U& b) { if (a <= b) return false; a = b; return true; } void yes_no(bool f, string yes = "Yes", string no = "No") { cout << (f ? yes : no) << "\n"; } template T getSum2D(const vector>& sum, int y1, int y2, int x1, int x2) { // y1--; // x1--; return sum[y2][x2] - sum[y1][x2] - sum[y2][x1] + sum[y1][x1]; } template void preCalcSum2D(vector>& sum) { int H = sum.size(), W = sum[0].size(); for (int i = 1; i < H; i++) { for (int j = 0; j < W; j++) { sum[i][j] += sum[i - 1][j]; } } for (int i = 0; i < H; i++) { for (int j = 1; j < W; j++) { sum[i][j] += sum[i][j - 1]; } } } void solve() { ll w, h, d; cin >> w >> h >> d; using P = pair; P enemy, bullet, vel; cin >> enemy.first >> enemy.second; cin >> bullet.first >> bullet.second; cin >> vel.first >> vel.second; ll g = gcd(vel.first, vel.second); vel.first /= g; vel.second /= g; d *= g; ll gx = gcd(vel.first, 2 * w); ll gy = gcd(vel.second, 2 * h); ll dx = 2 * w / gx; ll dy = 2 * h / gy; vel.first /= gx; vel.second /= gy; bool ans = false; rep(i, 4) { ll mx = enemy.first; ll my = enemy.second; if (i & 1) mx = -mx; if (i & 2) my = -my; mx -= bullet.first; my -= bullet.second; if (mx % gx != 0 || my % gy != 0) continue; mx /= gx; my /= gy; mx *= inv_mod(vel.first, dx); my *= inv_mod(vel.second, dy); auto t = crt({mx, my}, {dx, dy}); if (t.second == 0) continue; if (t.first <= d) ans = true; } yes_no(ans, "Hit", "Miss"); } int main() { cin.tie(0); ios::sync_with_stdio(false); int t = 1; cin >> t; rep(ti, t) solve(); return 0; }