#include <bits/stdc++.h>
#define int long long
#define ll long long
using namespace std;
ifstream fin ("inno.in");
ofstream fout ("inno.out");
const int NMAX=1e5;
int v[NMAX*2+100],suf[NMAX*2+100],pref[NMAX*2+100];
int nrbiti(int n){
int nrb=0;
while (n){
if (n%2==1){
nrb++;
}
n/=2;
}
return nrb;
}
int lim=(1<<31)-1;
signed main()
{
int n,k;
fin>>n>>k;
for (int i=1;i<=n;i++){
fin>>v[i];
}
pref[0]=suf[n+1]=lim;
/// prefix
pref[1]=v[1];
for (int i=2;i<=n;i++){
pref[i]=pref[i-1]&v[i];
}
/// sufix
suf[n]=v[n];
for (int i=n-1;i>=1;i--){
pref[i]=pref[i+1]&v[i];
}
/// brut dar optimizat cu prefixe si sufixe
/// fac n^2 cu i si j
/// fac ca si cum elimin secventa v[i],v[i+1],...,v[j]
int cnt=0;
for (int i=1;i<=n;i++){
for (int j=i;j<=n;j++){
int x=pref[i-1]&suf[j+1];
fout<<x<<" ";
if (nrbiti(x)>=k){
cnt++;
///fout<<endl<<i<<" "<<j<<endl<<"------------------------"<<endl;
}
}
fout<<endl;
}
fout<<cnt;
return 0;
}