fn main() { let (n, k): (usize, usize) = { let mut buf = String::new(); std::io::stdin().read_line(&mut buf).unwrap(); let mut iter = buf.split_whitespace(); ( iter.next().unwrap().parse().unwrap(), iter.next().unwrap().parse().unwrap(), ) }; let mut a: Vec = { let mut buf = String::new(); std::io::stdin().read_line(&mut buf).unwrap(); let iter = buf.split_whitespace(); iter.map(|x| x.parse().unwrap()).collect() }; a.sort_by(|a, b| b.cmp(a)); let mut ans = 0; for x in 0..(1 << (n - 1)) { let mut res = k; for i in 0..(n - 1) { if (x & (1 << i)) != 0 { res %= a[i]; } } res %= a[n - 1]; ans = std::cmp::max(ans, res); } println!("{}", ans); }