N, M = gets.split.map(&:to_i) A = gets.split.map(&:to_i) counter = A.map { |a| a % M }.tally counter.default = 0 ans = [1, counter[0]].min 1.upto(M / 2) do |i| j = M - i cnt_1 = (M % (i + i) == 0) ? [1, counter[i]].min : counter[i] cnt_2 = (M % (j + j) == 0) ? [1, counter[j]].min : counter[j] ans += [cnt_1, cnt_2].max end puts ans