#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define M 55
int pri[M][M],map[10000];
int getsg(int a,int b){
int i,j;
mem(map,0);
for(i=0;i<a;i++)
for(j=0;j<b;j++){
map[pri[a][j]^pri[i][b]]=1;
}
for(i=0;;i++){
if(!map[i])
return i;
}
}
int main()
{
int n,m,ans,i,j;char c;
mem(pri,-1);
for(i=0;i<M;i++)
pri[0][i]=pri[i][0]=i;
for(i=1;i<M;i++)
for(j=1;j<M;j++){
pri[i][j]=getsg(i,j);
}
while(scanf("%d%d",&n,&m)!=EOF&&n+m){
getchar();
for(ans=0,i=0;i<n;i++){
for(j=0;j<m;j++){
c=getchar();
if(c=='#'){
ans^=pri[i][j];
}
}
getchar();
}
if(ans)printf("John\n");
else printf("Jack\n");
}
return 0;
}
tjut 2873
最新推荐文章于 2016-08-22 10:03:46 发布