int ans[maxn][2], cnt[maxn][2]; voiddfs(int u, int o){ for (int i = 1; i <= k[o ^ 1]; ++i) { int v = (u + n - a[i][o ^ 1]) % n; if (~ans[v][o ^ 1]) continue ; if (!ans[u][o]) ans[v][o ^ 1] = 1, dfs(v, o ^ 1); elseif (++cnt[v][o ^ 1] == k[o ^ 1]) ans[v][o ^ 1] = 0, dfs(v, o ^ 1); } }