How to use ERC721URIStorage and ERC721Royalty together (requires override)

I am initializing my contract as below:

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/access/AccessControl.sol";
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
import "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Royalty.sol";
import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

contract NFTMinter is ERC721URIStorage, ERC721Royalty, EIP712, AccessControl

And I get 2 errors requiring me to do some overriding. Here is the error:

I understand ERC721Storage and ERC721Royalty both have _burn with different functionalities but I don't know how to resolve this issue.

_burn in ERC721Storage:

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual override {
        super._burn(tokenId);

        if (bytes(_tokenURIs[tokenId]).length != 0) {
            delete _tokenURIs[tokenId];
        }
    }

_burn in ERC721Royalty

    /**
     * @dev See {ERC721-_burn}. This override additionally clears the royalty information for the token.
     */
    function _burn(uint256 tokenId) internal virtual override {
        super._burn(tokenId);
        _resetTokenRoyalty(tokenId);
    }

Maybe you can try import ERC2981 in your ERC721URIStorage contract instead of import ERC721Royalty.

Ref: how ERC721Royalty implemented, you can see it simply just import ERC2981.sol .