def count(beta, m, a0, n)
f = lambda { |x| (beta * x) % m }
ar = [a0]
(n - 1).times { ar << f[ar.last] }
m = ar.inject(0, :+) / n.to_f
d = ar.inject(0) { |r, e| r + (e - m) ** 2 } / (n - 1)
[m, d]
end
#beta, m, a0, n = (1..4).map { gets.to_i }
beta, m, a0, n = 2 ** 16 + 3, 2 ** 31, 1, 4000
m, d = count(beta, m, a0, n)
puts "average: #{m}"
puts "dispersion: #{d}"
ZGVmIGNvdW50KGJldGEsIG0sIGEwLCBuKQogIGYgPSBsYW1iZGEgeyB8eHwgKGJldGEgKiB4KSAlIG0gfQoKICBhciA9IFthMF0KICAobiAtIDEpLnRpbWVzIHsgYXIgPDwgZlthci5sYXN0XSB9CiAgCiAgbSA9IGFyLmluamVjdCgwLCA6KykgLyBuLnRvX2YKICBkID0gYXIuaW5qZWN0KDApIHsgfHIsIGV8IHIgKyAoZSAtIG0pICoqIDIgfSAvIChuIC0gMSkKICBbbSwgZF0KZW5kCgojYmV0YSwgbSwgYTAsIG4gPSAoMS4uNCkubWFwIHsgZ2V0cy50b19pIH0KYmV0YSwgbSwgYTAsIG4gPSAyICoqIDE2ICsgMywgMiAqKiAzMSwgMSwgNDAwMAoKbSwgZCA9IGNvdW50KGJldGEsIG0sIGEwLCBuKQoKcHV0cyAiYXZlcmFnZTogI3ttfSIKcHV0cyAiZGlzcGVyc2lvbjogI3tkfSI=