""" https://yukicoder.me/problems/no/1083 一回値が変わると、半分未満になる よって、適用されるのは60回以下 Aのうち、最小の奴以下にはなる 何回か適用して、min(A) 未満の値でできる最大値が答え よくみたらNが思ったより小さかった 大きいほうから適用しないと意味ないので... """ N,K = map(int,input().split()) A = list(map(int,input().split())) A.sort() A.reverse() last = A.pop() s = set([K]) for a in A: add = [] for v in s: if v % a not in s: add.append(v % a) for w in add: s.add(w) ans = 0 for x in s: ans = max(ans, x % last) print (ans)