Problem:
Score : 400 points

Problem Statement

Given are a sequence A= {a_1,a_2,......a_N} of N positive even numbers, and an integer M.

Let a semi-common multiple of A be a positive integer X that satisfies the following condition for every k (1 \leq k \leq N):

There exists a non-negative integer p such that X= a_k \times (p+0.5).

Find the number of semi-common multiples of A among the integers between 1 and M (inclusive).

Constraints

1 \leq N \leq 10^5

1 \leq M \leq 10^9

2 \leq a_i \leq 10^9

a_i is an even number.

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N M
a_1 a_2 ... a_N

Output

Print the number of semi-common multiples of A among the integers between 1 and M (inclusive).

Sample Input 1

2 50
6 10

Sample Output 1

2

15 = 6 \times 2.5

15 = 10 \times 1.5

45 = 6 \times 7.5

45 = 10 \times 4.5

Thus, 15 and 45 are semi-common multiples of A. There are no other semi-common multiples of A between 1 and 50, so the answer is 2.

Sample Input 2

3 100
14 22 40

Sample Output 2

0

The answer can be 0.

Sample Input 3

5 1000000000
6 6 2 6 2

Sample Output 3

166666667

Solution in Fortran (gfortran v4.8.4) (judge verdict: Wrong Answer)

program speedrun
implicit none
integer(16)::N,M
integer(16),allocatable,dimension(:)::a
integer(16)::D,T
logical::Check2
integer(16)::i
read*,N,M
allocate(a(N))
read*,A
D=1_16
do
    if(mod(a(1),2_16**(D+1_16))/=0_16)exit
    D=D+1_16
end do
Check2=.true.
do i=1,N
    if(mod(A(i),2**D)/=0.or.mod(A(I),2**(D+1_16))==0_16)Check2=.false.
end do
T=(A(1)/2)*(A(2)/2)/gcd(A(1)/2,A(2)/2)
do i=3,N
    T=T*(A(i)/2)/gcd(T,A(i)/2)
end do
print"(i0)",merge((M/T+1)/2,0_16,Check2)
contains
integer(16) recursive function gcd(a, b)result(res)
  integer(16), intent(in)::a, b
  res=merge(b, gcd(b, mod(a, b)),mod(a, b)==0)
end function
end program speedrun