const p = 12345679943n; function onClick() { if(n >= 30000n) { return; } n++; x = log(42n, 1n + (x+n) % (p-1n), p); } function log(g, b, m) { const s = Math.ceil(Number(m)**.5); const r = new Map(); let a = b % m; if(a == 1n) { return 0n; } for(let i = 0; i < s; i++) { r.set(a, i); a *= g; a %= m; } const gs = pow(g, BigInt(s), m); a = gs; for(let j = 1; j <= s; j++) { const i = r.get(a); if(i !== undefined) { return BigInt(j*s-i); } a *= gs; a %= m; } }