def b_gcd(m, n):
	fact = 1
	
	while m > 1 and n > 1 and m != n:
		
		om, on = m & 1, n & 1
		
		if om and on:
			m, n = abs(m - n)>>1, min(m, n)
			
		elif not (om or on):
			fact, m, n = fact<<1, m>>1, n>>1
		
		else:
			m, n = (m>>1, n) if on else (m, n>>1)
	
	m, n = (m, n) if n > m else (n, m)
	return (m or n)<<(fact - 1)