# ABC150 D

si = lambda: eval(input())

ni = lambda: int(eval(input()))

nm = lambda: list(map(int, input().split()))

nl = lambda: list(map(int, input().split()))

from fractions import gcd

from math import ceil

def lcm(x, y):

    return (x * y) // gcd(x, y)

n,m=nm()

a=nl()

ans=0

a=[x//2 for x in a] 



lcm_v=a[0]

for i in range(n):

    lcm_v=lcm(lcm_v,a[i])

ok_flg=[(lcm_v//i)%2==1 for i in a]

if all(ok_flg):

    ans=((m//lcm_v)+1)//2

print(ans)



from math import gcd, ceil





def lcm(a, b):

    return (a*b)//gcd(a, b)





n, m = list(map(int, input().split()))

a = list(map(int, input().split()))



for i in range(n):

    a[i] = a[i]//2



lcm_v = a[0]

for i in range(1, n):

    lcm_v = lcm(lcm_v, a[i])



ok = True

for aa in a:

    if (lcm_v//aa) % 2 != 1:

        ok = False

        break

ans = 0

if ok:

    ans = ((m//lcm_v)+1)//2

print(ans)

# ABC150 D
si = lambda: eval(input())
ni = lambda: int(eval(input()))
nm = lambda: list(map(int, input().split()))
nl = lambda: list(map(int, input().split()))
from fractions import gcd
from math import ceil


def lcm(x, y):
    return (x * y) // gcd(x, y)


n, m = nm()
a = nl()
ans = 0
a = [x // 2 for x in a]
lcm_v = a[0]
for i in range(n):
    lcm_v = lcm(lcm_v, a[i])
ok_flg = [(lcm_v // i) % 2 == 1 for i in a]
if all(ok_flg):
    ans = ((m // lcm_v) + 1) // 2
print(ans)

from math import gcd, ceil


def lcm(a, b):
    return (a * b) // gcd(a, b)


n, m = list(map(int, input().split()))
a = list(map(int, input().split()))
for i in range(n):
    a[i] = a[i] // 2
lcm_v = a[0]
for i in range(1, n):
    lcm_v = lcm(lcm_v, a[i])
ok = True
for aa in a:
    if (lcm_v // aa) % 2 != 1:
        ok = False
        break
ans = 0
if ok:
    ans = ((m // lcm_v) + 1) // 2
print(ans)

-# ABC150 D -si = lambda: eval(input()) -ni = lambda: int(eval(input())) -nm = lambda: list(map(int, input().split())) -nl = lambda: list(map(int, input().split())) -from fractions import gcd -from math import ceil +from math import gcd, ceil -def lcm(x, y): -    return (x * y) // gcd(x, y) +def lcm(a, b): +    return (a * b) // gcd(a, b) -n, m = nm() -a = nl() +n, m = list(map(int, input().split())) +a = list(map(int, input().split())) +for i in range(n): +    a[i] = a[i] // 2 +lcm_v = a[0] +for i in range(1, n): +    lcm_v = lcm(lcm_v, a[i]) +ok = True +for aa in a: +    if (lcm_v // aa) % 2 != 1: +        ok = False +        break -a = [x // 2 for x in a] -lcm_v = a[0] -for i in range(n): -    lcm_v = lcm(lcm_v, a[i]) -ok_flg = [(lcm_v // i) % 2 == 1 for i in a] -if all(ok_flg): +if ok: