My ugly code
#include <cstdio>
#include <cstring>
#include <map>
using namespace std;
const int maxn=2000+20;
const int maxn1=2e6+10;
int n;
int x[maxn],y[maxn];
bool vis[maxn1];
int max_num;
int main(){
while(~scanf("%d",&n)){
memset(vis,false,sizeof(vis));
for(int i=1;i<=n;i++){
scanf("%d",&x[i]);
vis[x[i]]=true;
}
for(int i=1;i<=n;i++){
scanf("%d",&y[i]);
vis[y[i]]=true ;
}
int cnt=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
int tmp=x[i]^y[j];
if(tmp < maxn1 && vis[ tmp ] == true) cnt++;
}
}
if(cnt % 2 == 0) printf("Karen\n");
else printf("Koyomi\n");
}
return 0;
}