#include using namespace std; #define REP(i,a,b) for(i=a;i inline void chmin(S &a, T b){if(a>b)a=b;} template inline void chmax(S &a, T b){if(a arr[100001]; int now[100001]; int nx[100001]; int nxbg[100001]; int dv[3000], dvs; int main(){ int i, j, k, t; ll res; scanf("%d%d",&N,&K); rep(i,N) scanf("%d",A+i); rep(i,N) arr[A[i]].push_back(i); for(i=N-1;i>=0;i--){ nxbg[i] = i + 1; while(nxbg[i] != N && A[nxbg[i]] <= A[i]) nxbg[i] = nxbg[nxbg[i]]; } rep(i,N){ t = A[i] - K; nx[i] = N; now[A[i]]++; if(t == 0){ nx[i] = nxbg[i]; } else if(t > 0){ dvs = 0; for(j=1;j*j<=t;j++) if(t%j==0){ dv[dvs++] = j; if(j*j!=t) dv[dvs++] = t/j; } rep(j,dvs){ if(A[i] % dv[j] != K) continue; if(now[dv[j]]=0;i--){ k = min(k, nx[i]); res -= N - k; } printf("%lld\n",res); return 0; }