#include #include #include #define MAX (3LL*1LL<<31) bool *seen = 0; long long unseen = 1; #define NB 100001 long long a[NB]; int main() { seen = (bool*)malloc(MAX); memset(seen, 0, MAX); seen[0] = true; memset(a, 0, sizeof(a)); for (long long n=1; n0; k--) { p^=a[k]; if (p>=MAX) { return 0; } if (seen[p]) { ok=false; break; } } if (ok) { a[n] = v; long long p=0; for (long long k=n; k>0; k--) { p^=a[k]; seen[p]=true; } printf ("%lld %lld %lld\n", n, v, unseen); fflush(stdout); while (seen[unseen]) { unseen++; if (unseen==MAX) { return 0; } } break; } } } } return 0; }