<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_print_bbox(x, y, zoom, width, height, dpi):
 """ Calculate the tile bounding box based on position, map size and resolution. The function returns the next larger tile-box, that covers the specified page size in mm. Args: x (float):
 map center x-coordinate in Mercator projection (EPSG:4326) y (float):
 map center y-coordinate in Mercator projection (EPSG:4326) zoom (int):
 tile zoom level to use for printing width (float):
 page width in mm height (float):
 page height in mm dpi (int):
 resolution in dots per inch Returns: GridBB: Bounding box of the map in TileCoordinates. '<tile min: <zoom: 14, x: 9891, y: 7786>, max: <zoom: 14, x: 9897, y: 7790>>' """

    tiles_h = width * dpi_to_dpmm(dpi) / TILE_SIZE
    tiles_v = height * dpi_to_dpmm(dpi) / TILE_SIZE
    mercator_coords = MercatorCoordinate(x, y)
    tile_coords = mercator_coords.to_tile(zoom)
    tile_bb = GridBB(zoom,
                     min_x=tile_coords.x - math.ceil(tiles_h / 2),
                     max_x=tile_coords.x + math.ceil(tiles_h / 2),
                     min_y=tile_coords.y - math.ceil(tiles_v / 2),
                     max_y=tile_coords.y + math.ceil(tiles_v / 2))
    return tile_bb