library SafeMath {
    /**
     * Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 ans = a - b;

        return ans;
    }

    /**
     * Adds two unsigned integers, reverts on overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 ans = a + b;
        require(ans >= a);
        return ans;
    }
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 ans = a + b;
    require(ans >= a);
    return ans;
}

/**
 * Adds two unsigned integers, reverts on overflow.
 */