#include using namespace std; int h = 2, w = 2; vector> gcd(vector> a){ if(a[0][1] == 0 || a[0][0] == 0) return a; if(abs(a[0][0]) > abs(a[0][1])){ swap(a[0][0], a[0][1]); swap(a[1][0], a[1][1]); } if(a[0][0] < 0){ a[0][0] *= -1; a[0][1] *= -1; } long long k = a[0][1]/a[0][0]; a[0][1] -= k*a[0][0]; if(a[0][1] < 0){ k--; a[0][1] += a[0][0]; } a[1][1] -= k*a[1][0]; return gcd(a); } vector> rotate(vector> a){ auto b = a; for(int i=0; i> a(h, vector(w)); for(int i=0; i> a[i][j]; } } for(int i=0; i<4; i++){ a = gcd(a); a = rotate(a); } for(int i=0; i<4; i++){ if(a[0][0] == 0) continue; if(a[0][1]%a[0][0] == 0) a[0][1] = 0; if(a[1][0]%a[0][0] == 0) a[1][0] = 0; } long long mi = -1; for(int i=0; i