pragma solidity ^0.4.13;

contract PoissonData {
    mapping (int => uint) public data;

    bool public isInitialized;
    uint public stage;

    function PoissonData() {
        isInitialized = false;
        stage = 0;
    }

    function lookup(int blocks) constant returns (uint) {
        require(isInitialized);
        return data[blocks];
    }

    function initialize() {
        require(!isInitialized);

        if (stage == 0) {
            data[1] = 5;
            data[2] = 80;
            data[3] = 235;
            data[4] = 444;
            data[5] = 690;
            data[6] = 964;
            data[7] = 1258;
            data[8] = 1569;
            data[9] = 1894;
            data[10] = 2230;
            data[11] = 2576;
            data[12] = 2931;
            data[13] = 3293;
            data[14] = 3662;
            data[15] = 4037;
            data[16] = 4417;
            data[17] = 4803;
            data[18] = 5192;
            data[19] = 5586;
            data[20] = 5984;
            data[21] = 6385;
            data[22] = 6789;
            data[23] = 7197;
            data[24] = 7607;
            data[25] = 8020;
            data[26] = 8436;
            data[27] = 8854;
            data[28] = 9274;
            data[29] = 9696;
            data[30] = 10120;
            data[31] = 10547;
            data[32] = 10975;
            data[33] = 11404;
            data[34] = 11836;
            data[35] = 12269;
            data[36] = 12703;
            data[37] = 13139;
            data[38] = 13577;
            data[39] = 14015;
            data[40] = 14455;
            data[41] = 14897;
            data[42] = 15339;
            data[43] = 15783;
            data[44] = 16227;
            data[45] = 16673;
            data[46] = 17120;
            data[47] = 17568;
            data[48] = 18017;
            data[49] = 18466;
            data[50] = 18917;
            data[51] = 19369;
            data[52] = 19821;
            data[53] = 20274;
            data[54] = 20728;
            data[55] = 21183;
            data[56] = 21639;
            data[57] = 22095;
            data[58] = 22552;
            data[59] = 23010;
            data[60] = 23469;
            data[61] = 23928;
            data[62] = 24388;
            data[63] = 24848;
            data[64] = 25310;
            data[65] = 25771;
            data[66] = 26234;
            data[67] = 26697;
            data[68] = 27160;
            data[69] = 27624;
            data[70] = 28089;
            data[71] = 28554;
            data[72] = 29020;
            data[73] = 29486;
            data[74] = 29953;
            data[75] = 30420;
            data[76] = 30887;
            data[77] = 31356;
            data[78] = 31824;
            data[79] = 32293;
            data[80] = 32763;
            data[81] = 33233;
            data[82] = 33703;
            data[83] = 34174;
            data[84] = 34645;
            data[85] = 35117;
            data[86] = 35589;
            data[87] = 36061;
            data[88] = 36534;
            data[89] = 37007;
            data[90] = 37481;
            data[91] = 37955;
            data[92] = 38429;
            data[93] = 38904;
            data[94] = 39379;
            data[95] = 39854;
            data[96] = 40330;
            data[97] = 40806;
            data[98] = 41282;
            data[99] = 41759;
            stage += 1;
        } else if (stage == 1) {
            data[100] = 42236;
            data[101] = 42713;
            data[102] = 43191;
            data[103] = 43669;
            data[104] = 44147;
            data[105] = 44626;
            data[106] = 45105;
            data[107] = 45584;
            data[108] = 46063;
            data[109] = 46543;
            data[110] = 47023;
            data[111] = 47503;
            data[112] = 47984;
            data[113] = 48464;
            data[114] = 48945;
            data[115] = 49427;
            data[116] = 49908;
            data[117] = 50390;
            data[118] = 50872;
            data[119] = 51354;
            data[120] = 51837;
            data[121] = 52320;
            data[122] = 52803;
            data[123] = 53286;
            data[124] = 53769;
            data[125] = 54253;
            data[126] = 54737;
            data[127] = 55221;
            data[128] = 55705;
            data[129] = 56190;
            data[130] = 56675;
            data[131] = 57160;
            data[132] = 57645;
            data[133] = 58130;
            data[134] = 58616;
            data[135] = 59102;
            data[136] = 59588;
            data[137] = 60074;
            data[138] = 60560;
            data[139] = 61047;
            data[140] = 61534;
            data[141] = 62021;
            data[142] = 62508;
            data[143] = 62995;
            data[144] = 63483;
            data[145] = 63971;
            data[146] = 64459;
            data[147] = 64947;
            data[148] = 65435;
            data[149] = 65923;
            data[150] = 66412;
            data[151] = 66901;
            data[152] = 67390;
            data[153] = 67879;
            data[154] = 68368;
            data[155] = 68858;
            data[156] = 69347;
            data[157] = 69837;
            data[158] = 70327;
            data[159] = 70817;
            data[160] = 71307;
            data[161] = 71798;
            data[162] = 72288;
            data[163] = 72779;
            data[164] = 73270;
            data[165] = 73761;
            data[166] = 74252;
            data[167] = 74743;
            data[168] = 75235;
            data[169] = 75726;
            data[170] = 76218;
            data[171] = 76710;
            data[172] = 77202;
            data[173] = 77694;
            data[174] = 78187;
            data[175] = 78679;
            data[176] = 79172;
            data[177] = 79664;
            data[178] = 80157;
            data[179] = 80650;
            data[180] = 81143;
            isInitialized = true;
        }
    }
}