private void solveC() {
int n = nextInt();
int k = nextInt();
int[][] wk = IntStream.range(0, n).collect(() -> new int[n][k],
(t, i) -> {
for (int j = 0; j < k; j++) {
t[i][j] = nextInt();
}
},
(t, u) -> {
Stream.concat(Arrays.stream(t), Arrays.stream(u));
});
out.println(recursiveC(wk, 0, 0) ? "Found" : "Nothing");
}
private boolean recursiveC(int[][] wk, int currentI, int currenXor) {
/*
* 最後の質問までいったので、今までのXORの結果を確認する
*/
if (currentI >= wk.length) {
return currenXor == 0;
}
boolean res = false;
/*
* currentI番目の質問のi番目の選択を選んだ場合のXORを確認していく
*/
for (int i = 0; i < wk[currentI].length; i++) {
res = res || recursiveC(wk, currentI + 1, currenXor ^ wk[currentI][i]);
}
return res;
}