function contribute_toTheGame() returns(bool) {
        uint amount = msg.value;
        
        if (amount < 1 ether) {
            msg.sender.send(msg.value);
            return false;
        }
        
        if (amount > 100 ether) {
            msg.sender.send(msg.value - 100 ether);
            amount = 100 ether;
        }

        
        if (regeneration + SIX_HOURS < block.timestamp) {
            
            
            if (totalplayers == 1) {
                
                playersAddresses[playersAddresses.length - 1].send(jackpot);
            } else if (totalplayers == 2) {
                
                playersAddresses[playersAddresses.length - 1].send(jackpot * 70 / 100);
                playersAddresses[playersAddresses.length - 2].send(jackpot * 30 / 100);
            } else if (totalplayers >= 3) {
                
                playersAddresses[playersAddresses.length - 1].send(jackpot * 70 / 100);
                playersAddresses[playersAddresses.length - 2].send(jackpot * 20 / 100);
                playersAddresses[playersAddresses.length - 3].send(jackpot * 10 / 100);
            }

            
            jackpot = 0;

            
            first_player = msg.sender;
            regeneration = block.timestamp;
            playersAddresses.push(msg.sender);
            playersAmounts.push(amount * 2);
            totalplayers += 1;
            amountInvested += amount;

            
            jackpot += amount;

            
            first_player.send(amount * 3 / 100);

            
            collectedFee += amount * 3 / 100;

            round += 1;
        } else {
            
            regeneration = block.timestamp;
            playersAddresses.push(msg.sender);
            playersAmounts.push(amount / 100 * 150);
            totalplayers += 1;
            amountInvested += amount;

            
            jackpot += (amount * 5 / 100);

            
            first_player.send(amount * 3 / 100);

            
            collectedFee += amount * 3 / 100;

while (playersAmounts[lastPlayerPaid] < (address(this).balance - jackpot - collectedFee) && lastPlayerPaid <= totalplayers) {
                playersAddresses[lastPlayerPaid].send(playersAmounts[lastPlayerPaid]);
                amountAlreadyPaidBack += playersAmounts[lastPlayerPaid];
                lastPlayerPaid += 1;
            }
        }
    }