#include #include #include using namespace std; int main() { vector a; a.push_back(-1); // to be 1-based map add; // entries in addition table for a(1)..a(n) map mul; // entries in multiplication table for a(2)..a(n) long long n = 0; long long i = 0; for (long long v=1; v<1000000000LL; v++) { bool ok = true; if (add.count(v+v) || mul.count(v*v)) { ok = false; } if (ok) { map xadd; for (long long m=1; m<=n; m++) { long long s = a[m]+v; if (xadd.count(s) || add.count(s)) { ok = false; break; } else { xadd[s] = true; } } } if (ok) { map xmul; for (long long m=1; m<=n; m++) { long long p=a[m]*v; if (xmul.count(p) || mul.count(p)) { ok = false; break; } else { xmul[p] = true; } } } if (ok) { n++; a.push_back(v); for (long long m=1; m<=n; m++) { add[a[m]+a[n]] = true; mul[a[m]*a[n]] = true; } } if (!add.count(v)) { i++; cout << i << ' ' << v << endl; if (i==10000) { break; } } } return 0; }