#include <climits>
#include <cstdlib>
#include <random>
#include <functional>
double rand(unsigned count, unsigned sides) {
if (count<=100) {
int result=0;
for(int i=0; i<count; ++i)
result += rand()/(RAND_MAX/sides);
return result;
}
static std::mt19937_64 engine;
const double mean = .5*count*sides;
const double stddev = std::sqrt(count*(1.0*sides*sides-1.0)/12.0);
std::normal_distribution<double> distribution(mean, stddev);
return distribution(engine);
}
#include <iostream>
int main() {
int count, sides;
while(std::cin >> count >> sides) {
std::cout << count << 'd' << sides << '=' << rand(count, sides) << '\n';
}
return 0;
}
I2luY2x1ZGUgPGNsaW1pdHM+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KCmRvdWJsZSByYW5kKHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCBzaWRlcykgewogICAgaWYgKGNvdW50PD0xMDApIHsKICAgICAgICBpbnQgcmVzdWx0PTA7CiAgICAgICAgZm9yKGludCBpPTA7IGk8Y291bnQ7ICsraSkKICAgICAgICAgICAgcmVzdWx0ICs9IHJhbmQoKS8oUkFORF9NQVgvc2lkZXMpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBzdGF0aWMgc3RkOjptdDE5OTM3XzY0IGVuZ2luZTsKICAgIGNvbnN0IGRvdWJsZSBtZWFuID0gLjUqY291bnQqc2lkZXM7CiAgICBjb25zdCBkb3VibGUgc3RkZGV2ID0gc3RkOjpzcXJ0KGNvdW50KigxLjAqc2lkZXMqc2lkZXMtMS4wKS8xMi4wKTsKICAgIHN0ZDo6bm9ybWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+IGRpc3RyaWJ1dGlvbihtZWFuLCBzdGRkZXYpOwogICAgcmV0dXJuIGRpc3RyaWJ1dGlvbihlbmdpbmUpOwp9CgojaW5jbHVkZSA8aW9zdHJlYW0+CgppbnQgbWFpbigpIHsKICAgIGludCBjb3VudCwgc2lkZXM7CiAgICB3aGlsZShzdGQ6OmNpbiA+PiBjb3VudCA+PiBzaWRlcykgewogICAgICAgIHN0ZDo6Y291dCA8PCBjb3VudCA8PCAnZCcgPDwgc2lkZXMgPDwgJz0nIDw8IHJhbmQoY291bnQsIHNpZGVzKSA8PCAnXG4nOwogICAgfQogICAgcmV0dXJuIDA7Cn0=
MSA2CjEgNgoxIDYKMSA2CjEgNgoxIDYKMSA2CjEgNgoxIDYKMSA2CjEgNgoxMDAgMTAwCjEwMCAxMDAKMTAwIDEwMAoxMDAgMTAwCjEwMCAxMDAKMTAwIDEwMAoxMDAgMTAwCjEwMCAxMDAKMTAwIDEwMAoxMDAgMTAwCjEwMDAwIDEwMDAwCjEwMDAwIDEwMDAwCjEwMDAwIDEwMDAwCjEwMDAwIDEwMDAwCjEwMDAwIDEwMDAwCjEwMDAwIDEwMDAwCjEwMDAwIDEwMDAwCjEwMDAwIDEwMDAwCjEwMDAwIDEwMDAwCjEwMDAwIDEwMDAwCjEwMDAwMDAgMTAwMDAwMAoxMDAwMDAwIDEwMDAwMDAKMTAwMDAwMCAxMDAwMDAwCjEwMDAwMDAgMTAwMDAwMAoxMDAwMDAwIDEwMDAwMDAKMTAwMDAwMCAxMDAwMDAwCjEwMDAwMDAgMTAwMDAwMAoxMDAwMDAwIDEwMDAwMDAKMTAwMDAwMCAxMDAwMDAwCjEwMDAwMDAgMTAwMDAwMA==
1 6
1 6
1 6
1 6
1 6
1 6
1 6
1 6
1 6
1 6
1 6
100 100
100 100
100 100
100 100
100 100
100 100
100 100
100 100
100 100
100 100
10000 10000
10000 10000
10000 10000
10000 10000
10000 10000
10000 10000
10000 10000
10000 10000
10000 10000
10000 10000
1000000 1000000
1000000 1000000
1000000 1000000
1000000 1000000
1000000 1000000
1000000 1000000
1000000 1000000
1000000 1000000
1000000 1000000
1000000 1000000