# Aの最小値未満の整数値で一番大きい数字になるmodで最初に割る、それがキープされる # というのでは不足 # Ai < AjのときK mod Ai mod Aj = K mod Ai # だがK mod Aj mod Ai は K mod Ai nor K mod Aj # つまりAを降順に並べたとき、大きいほうから使うか使わないかの2択がある # それをビット全探索する、しかし最後はmod Aminが必要 # また、Ai=Ajならば1つだけでいい N, K = map(int, input().split()) A = list(map(int, input().split())) A_set = set(A) A_list = list(A_set) A_sorted = sorted(A_list, reverse = True) A_bruteforce = A_sorted[:-1] ans = 0 for bit in range(1<>shift & 1 == 1: k %= A_bruteforce[shift] k %= A_sorted[-1] ans = max(ans, k) #print(bin(bit), k) print(ans)