#include<bits/stdc++.h>
using namespace std;
#define N 100001
int segtree[6*N],a[N];
void maketree(int l,int h, int pos)
{ if(l==h)
{ segtree[pos]=a[l];
return ;
}
int mid=l+(h-l)/2;
maketree(l,mid,2*pos+1);
maketree(mid+1,h,2*pos+2);
segtree[pos]=segtree[2*pos+1] | segtree[2*pos+2];
}
int query(int l, int r, int ql, int qh,int pos)
{ if(ql<=l && qh>=r)
return segtree[pos];
if(ql>r || qh<l)
return 0;
int mid=l+(r-l)/2;
return query(l,mid,ql,qh,2*pos+1) | query(mid+1,r,ql,qh,2*pos+2);
}
int main()
{ int t,n,k;
cin>>t;
while(t--)
{ cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
int ans=0,j=1;
maketree(1,n,0);
for(int i=1;i<=n;i++)
{ while(j<=n && query(1,n,i,j,0)>=k)
j++;
ans+=j;
}
cout<<ans<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBOIDEwMDAwMQppbnQgc2VndHJlZVs2Kk5dLGFbTl07CnZvaWQgbWFrZXRyZWUoaW50IGwsaW50IGgsIGludCBwb3MpCnsgICBpZihsPT1oKSAgICAKICAgIHsgICBzZWd0cmVlW3Bvc109YVtsXTsKICAgICAgICByZXR1cm4gOwogICAgfQogICAgaW50IG1pZD1sKyhoLWwpLzI7CiAgICBtYWtldHJlZShsLG1pZCwyKnBvcysxKTsKICAgIG1ha2V0cmVlKG1pZCsxLGgsMipwb3MrMik7CiAgICBzZWd0cmVlW3Bvc109c2VndHJlZVsyKnBvcysxXSB8IHNlZ3RyZWVbMipwb3MrMl07Cn0KaW50IHF1ZXJ5KGludCBsLCBpbnQgciwgaW50IHFsLCBpbnQgcWgsaW50IHBvcykKeyAgIGlmKHFsPD1sICYmIHFoPj1yKQogICAgcmV0dXJuIHNlZ3RyZWVbcG9zXTsKICAgIGlmKHFsPnIgfHwgcWg8bCkKICAgIHJldHVybiAwOwogICAgaW50IG1pZD1sKyhyLWwpLzI7CiAgICByZXR1cm4gcXVlcnkobCxtaWQscWwscWgsMipwb3MrMSkgfCBxdWVyeShtaWQrMSxyLHFsLHFoLDIqcG9zKzIpOwp9CmludCBtYWluKCkKeyAgIGludCB0LG4sazsKICAgIGNpbj4+dDsKICAgIHdoaWxlKHQtLSkKICAgIHsgICBjaW4+Pm4+Pms7CiAgICAgICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICAgICAgY2luPj5hW2ldOwogICAgICAgIGludCBhbnM9MCxqPTE7CiAgICAgICAgbWFrZXRyZWUoMSxuLDApOwogICAgICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgICAgIHsgICB3aGlsZShqPD1uICYmIHF1ZXJ5KDEsbixpLGosMCk+PWspCiAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgYW5zKz1qOwogICAgICAgIH0KICAgICAgICBjb3V0PDxhbnM8PGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==