#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<climits>
#include<cctype>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<set>
#include<stack>
#include<string>
#include<vector>
#define ll __int64
#define MAX 1010
#define eps 1e-8
#define INF INT_MAX
using namespace std;
int n,m,k,a[MAX];
int main(){
while (scanf("%d%d%d",&n,&m,&k) != EOF){
for (int i = 1; i<=m+1; i++)
scanf("%d",&a[i]);
int ans = 0;
for (int i = 1; i<m+1; i++){
int t = (a[i]^a[m+1]),cnt = 0;
for (int c = 0; c<n; c++)
if (t&(1<<c)) cnt++;
if (cnt <= k) ans++;
}
printf("%d\n",ans);
}
return 0;
}
467C
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<climits>
#include<cctype>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<set>
#include<stack>
#include<string>
#include<vector>
#define ll __int64
#define MAX 5010
#define eps 1e-8
#define INF INT_MAX
using namespace std;
ll d[MAX][MAX],a[MAX];
int n,m,k;
int main(){
while (scanf("%d%d%d",&n,&m,&k) != EOF){
int t;
a[0] = 0;
for (int i = 1; i<=n; i++){
scanf("%d",&t);
a[i] = a[i-1] + t;
}
memset(d,0LL,sizeof(d));
for (int i = m; i<=n; i++)
for (int j = 1; j<=i/m&&j<=k; j++)
d[i][j] = max(d[i-1][j],d[i-m][j-1]+a[i] - a[i-m]);
printf("%I64d\n",d[n][k]);
}
return 0;
}