#include<iostream>
main(){long N,X,a=0,b=1,A,h,c;std::cin>>N>>X>>A;h=X,N--;while(N){std::cin>>A,c=a+b;if(h%A) a=c;if(X%A) b=c;X=(X/A)*A,h=((h+A-1)/A)*A,N--;}std::cout<<a+b;}
#include<bits/stdc++.h>
using namespace std;

#define FOR(i,s,t) for(int i=(s),_t=(t); i<=_t; ++i)
#define DOR(i,s,t) for(int i=(s),_t=(t); i>=_t; --i)
#define EOR(i,x) for(int i=Head[x]; ~i; i=Nxt[i])

typedef long double db;
typedef long long ll;

namespace Eddd {
	inline char sc() {
		return getchar();
		static const int LEN=100000;
		static char Buf[LEN],*OP=Buf,*ED=Buf;
		if(OP==ED) ED=(OP=Buf)+fread(Buf,1,LEN,stdin);
		return *OP++;
	}
	template<class T> void rd(T &x) {
		static int c,f;x=f=0;
		while(c=sc(),c<48) if(c=='-') f=1;
		do x=(x<<3)+(x<<1)+(c^48);
		while(c=sc(),c>47);if(f) x=-x;
	}
	template<class T> void pt(T x) {
		if(x<0) putchar('-'),x=-x;
		else if(!x) putchar('0');
		static int Stk[30],tp=0;
		for(; x; x/=10) Stk[tp++]=x%10;
		while(tp) putchar(Stk[--tp]^48);
	}
	template<class T> void ptk(const T &x) {
		pt(x);putchar(' ');
	}
	template<class T> void ptn(const T &x) {
		pt(x);putchar('\n');
	}
	template<class T> bool chkmi(T &x,const T &y) {
		return x>y?x=y,true:false;
	}
	template<class T> bool chkmx(T &x,const T &y) {
		return x<y?x=y,true:false;
	}
}
using namespace Eddd;

ll A[55];
ll C[55];
ll f[55][2];
int main() {
	int n;
	rd(n);
	ll num;
	rd(num);
	FOR(i,1,n) rd(A[i]);
	DOR(i,n,1) {
		C[i]=num/A[i];
		num%=A[i];
	}
	FOR(i,1,n-1) A[i]=A[i+1]/A[i];
//	FOR(i,1,n-1) {
//		cerr << C[i] << " " << A[i] << endl;
//	}
	f[0][0]=1;
	FOR(i,1,n-1) {
		f[i][0]+=f[i-1][0];
		if(C[i]) f[i][1]+=f[i-1][0];
		if(C[i]+1==A[i]) {
			f[i][1]+=f[i-1][1];
		} else {
			f[i][0]+=f[i-1][1];
			f[i][1]+=f[i-1][1];
		}
	}
	ptn(f[n-1][0]+f[n-1][1]);
	return 0;	
}