#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define BET(a,b,c) ((a)<=(b)&&(b)<(c)) #define FOR(i,n) for(int i=0,i##_end=(int(n));i VI; typedef vector VVI; typedef long long ll_t; long long gcd (long long s , long long t) { return t ? gcd(t,s%t) : s ; } ll_t exgcd(ll_t a, ll_t b, ll_t &x, ll_t &y) { if(b == 0) { x = 1; y = 0; return a; } else { ll_t d = exgcd(b, a % b, y, x); y -= a / b * x; return d; } } ll_t inv(ll_t a, ll_t mod) { ll_t x, y; if (exgcd(a, mod, x, y) == 1){ return (x + mod) % mod; } else { return -1; } } bool modular(ll_t a1, ll_t m1 , ll_t a2 , ll_t m2 , ll_t &val , ll_t& mod){ a1 %= m1 ; a2 %= m2; if(a1>a2) return modular(a2,m2,a1,m1,val,mod); ll_t A,B,g = exgcd(m1,m2,A,B); if(a1%g != a2%g) return false; ll_t M = a1%g ; a1/=g ; m1/=g; a2/=g ; m2/=g; ll_t k = (A+m2)*(a2-a1)%m2; mod = m1*m2*g; val = ((a1+k*m1)*g+M) % mod; return true; } ll_t regular_mod(ll_t x , ll_t mod) { if(x>=0) return x % mod; return (mod - regular_mod(-x , mod)) % mod; } bool calc(ll_t v, ll_t x, ll_t m, ll_t& rx, ll_t &rmod){ v = regular_mod(v, m); x = regular_mod(x, m); // v * t = x (mod m) // t = x * inv(v) (mod m) ll_t g = gcd(v, m); if(g > 1){ if(x % g) return false; v /= g; m /= g; x /= g; } rx = regular_mod(x * inv(v, m), m); rmod = m; if(rx == -1) return false; //cout<<"! "<>q; FOR(i,q){ int w,h,d,mx,my,hx,hy,vx,vy; scanf("%d%d%d%d%d%d%d%d%d", &w,&h,&d,&mx,&my,&hx,&hy,&vx,&vy); ll_t g = gcd(abs(vx), abs(vy)); vx /= g; vy /= g; d *= g; vector X = { mx, mx, 2LL * w - mx, 2LL * w - mx }; vector Y = { my, 2LL * h - my, 2LL * h - my, my }; bool ok = false; FOR(k,4){ long long w2 = w * 2; long long h2 = h * 2; long long x = X[k]; long long y = Y[k]; long long tx, ty; if(!calc(vx, x - hx, w2, tx, w2)) continue; if(!calc(vy, y - hy, h2, ty, h2)) continue; long long val, mod; if(modular(tx, w2, ty, h2, val, mod)){ if(val <= d){ ok = true; break; } } } puts(ok?"Hit":"Miss"); } return 0; }