function place(uint8 cell) external {
        require(map[currentRound][cell] == 0x0);
        _transfer(msg.sender, this, price);
        
        map[currentRound][cell] = msg.sender;
        Place(currentRound, cell, msg.sender);
        rand1 += uint(msg.sender) + block.timestamp;
        rand2 -= uint8(msg.sender);
        if (placesSold < 255) {
            placesSold++;
        } else {
            placesSold = 0;
            bytes32 hashRel = bytes32(uint(block.blockhash(block.number - rand2 - 1)) + block.timestamp + rand1);
            
            uint8 place1 = uint8(hashRel[31]);
            uint8 place2 = uint8(hashRel[30]);
            uint8 place3 = uint8(hashRel[29]);
            uint8 place4 = uint8(hashRel[28]);
            uint8 place5 = uint8(hashRel[27]);
            
            if (place2 == place1) {
                place2++;
            }
            
            if (place3 == place1) {
                place3++;
            }
            if (place3 == place2) {
                place3++;
            }
            
            if (place4 == place1) {
                place4++;
            }
            if (place4 == place2) {
                place4++;
            }
            if (place4 == place3) {
                place4++;
            }
            
            if (place5 == place1) {
                place5++;
            }
            if (place5 == place2) {
                place5++;
            }
            if (place5 == place3) {
                place5++;
            }
            if (place5 == place4) {
                place5++;
            }
            
            gameBalanceOf[map[currentRound][place1]] += places[0];
            gameBalanceOf[map[currentRound][place2]] += places[1];
            gameBalanceOf[map[currentRound][place3]] += places[2];
            gameBalanceOf[map[currentRound][place4]] += places[3];
            gameBalanceOf[map[currentRound][place5]] += places[4];
            gameBalanceOf[owner] += fee;
            
            BalanceChange(map[currentRound][place1], gameBalanceOf[map[currentRound][place1]]);
            BalanceChange(map[currentRound][place2], gameBalanceOf[map[currentRound][place2]]);
            BalanceChange(map[currentRound][place3], gameBalanceOf[map[currentRound][place3]]);
            BalanceChange(map[currentRound][place4], gameBalanceOf[map[currentRound][place4]]);
            BalanceChange(map[currentRound][place5], gameBalanceOf[map[currentRound][place5]]);
            BalanceChange(owner, gameBalanceOf[owner]);
            
            Finish(currentRound, place1, place2, place3, place4, place5);
            
            currentRound++;
            RoundChange(currentRound);
        }
    }