import math def main(): import sys input = sys.stdin.read data = input().split() idx = 0 N, M = int(data[idx]), int(data[idx+1]) idx +=2 A = list(map(int, data[idx:idx+N])) idx +=N B = list(map(int, data[idx:idx+M])) def check_a(x): low = 0 high = len(A) - 1 best = -1 while low <= high: mid = (low + high) // 2 a = A[mid] lower = a * a if lower <= x: best = mid low = mid + 1 else: high = mid - 1 if best == -1: return False a = A[best] upper = (a + 1) * (a + 1) - 1 return x <= upper def check_b(y): low = 0 high = len(B) - 1 best = -1 while low <= high: mid = (low + high) // 2 b = B[mid] lower = b * b if lower <= y: best = mid low = mid + 1 else: high = mid - 1 if best == -1: return False b = B[best] upper = (b + 1) * (b + 1) - 1 return y <= upper k = 1 while True: found = False max_d = int(math.isqrt(k)) divisors = set() for d in range(1, max_d + 1): if k % d == 0: divisors.add(d) divisors.add(k // d) for d in divisors: a_ok = check_a(d) if a_ok: y = k // d if check_b(y): found = True break b_ok = check_b(d) if b_ok: x = k // d if check_a(x): found = True break if not found: print(k) return k += 1 if __name__ == "__main__": main()