library SafeMath {
    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b)
        internal
        pure
        returns (uint256) 
    {
        require(b <= a, "SafeMath sub failed");
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c) 
    {
        c = a + b;
        require(c >= a, "SafeMath add failed");
        return c;
    }
    
}
function add(uint256 a, uint256 b)
    internal
    pure
    returns (uint256 c) 
{
    c = a + b;
    require(c >= a, "SafeMath add failed");
    return c;
}

/**
 * @dev Adds two numbers, throws on overflow.
 */