where checkbalance() just reads the mapping _balance:
function checkbalance(address _user) public view returns (uint256) {
return _balances[_user];
}
This is so obvious. The function supply() does not ask for money, we can just call it with any amount we desire. Before calling supply(), we should call remove() to clear user balance, so that the check require(_balances[_user] == 0, "already exists"); will pass.