Find the volume of the figure shown. The middle solid figure has a diameter of 3 cm and height of 10 cm.

Round your answer to two decimal places.

[python]
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from matplotlib.patches import Arrow

fig, ax = plt.subplots(figsize=(6, 6))

ellipse_width = 8.1
ellipse_height = 1
rect_height = 2.1
small_cylinder_width = 3.1
small_ellipse_height = 0.8
small_cylinder_height = 6

top_center = (0, small_cylinder_height/2 + rect_height)
top_ellipse = patches.Arc(
    top_center, ellipse_width, ellipse_height*2, 
    angle=0, theta1=0, theta2=360, linewidth=1.5, color='black'
)
ax.plot([0, ellipse_width / 2], [small_cylinder_height/2 + rect_height, small_cylinder_height/2 + rect_height], color='black')
ax.text(ellipse_width / 4, small_cylinder_height/2 + rect_height + 0.1, "$\\bf{8\\ cm}$", fontsize=8)
ax.add_patch(top_ellipse)

ax.add_line(plt.Line2D(
    [ellipse_width/2, ellipse_width/2], 
    [small_cylinder_height/2 + rect_height, small_cylinder_height/2 + rect_height - rect_height],
    color='black'
))
ax.add_line(plt.Line2D(
    [-ellipse_width/2, -ellipse_width/2], 
    [small_cylinder_height/2 + rect_height, small_cylinder_height/2 + rect_height - rect_height],
    color='black'
))
ax.plot([ellipse_width/2 + 1, ellipse_width/2 + 1], [small_cylinder_height/2 + rect_height, -small_cylinder_height/2 - rect_height], color='black')
ax.plot([ellipse_width/2 + 1.1, ellipse_width/2 + 0.9], [small_cylinder_height/2 + rect_height, small_cylinder_height/2 + rect_height], color='black')
ax.plot([ellipse_width/2 + 1.1, ellipse_width/2 + 0.9], [small_cylinder_height/2, small_cylinder_height/2], color='black')
ax.plot([ellipse_width/2 + 1.1, ellipse_width/2 + 0.9], [small_cylinder_height/2 + rect_height, small_cylinder_height/2 + rect_height], color='black')
ax.plot([ellipse_width/2 + 1.1, ellipse_width/2 + 0.9], [-small_cylinder_height/2 - rect_height, -small_cylinder_height/2 - rect_height], color='black')
ax.plot([ellipse_width/2 + 1.1, ellipse_width/2 + 0.9], [-small_cylinder_height/2, -small_cylinder_height/2], color='black')
ax.text(ellipse_width/2 + 1.2, (small_cylinder_height + rect_height)/2, "$\\bf{2\\ cm}$", fontsize=8)
ax.text(ellipse_width/2 + 1.2, -(small_cylinder_height + rect_height)/2, "$\\bf{2\\ cm}$", fontsize=8)

arrow1 = Arrow(
    x=0, y=-rect_height/2,
    dx=small_cylinder_width/2, dy=0,
    width=0.2,
    color='black'
)
arrow2 = Arrow(
    x=0, y=-rect_height/2,
    dx=-small_cylinder_width/2, dy=0,
    width=0.2,
    color='black'
)
ax.add_patch(arrow1)
ax.add_patch(arrow2)
bottom_center = (0, -small_cylinder_height/2 - rect_height)
bottom_ellipse = patches.Arc(
    bottom_center, ellipse_width, ellipse_height*2, 
    angle=0, theta1=180, theta2=360, linewidth=1.5, color='black'
)
ax.add_patch(bottom_ellipse)

ax.add_line(plt.Line2D(
    [ellipse_width/2, ellipse_width/2], 
    [-small_cylinder_height/2 - rect_height, -small_cylinder_height/2],
    color='black'
))
ax.add_line(plt.Line2D(
    [-ellipse_width/2, -ellipse_width/2], 
    [-small_cylinder_height/2 - rect_height, -small_cylinder_height/2],
    color='black'
))

top_inner_ellipse = patches.Arc(
    (0, small_cylinder_height/2), ellipse_width, ellipse_height*2,
    angle=0, theta1=180, theta2=360, linewidth=1.2, color='black'
)
ax.plot([0, ellipse_width / 2], [-small_cylinder_height/2 - rect_height - 1.3, -small_cylinder_height/2 - rect_height - 1.3], color='black')
ax.text(ellipse_width / 4, -small_cylinder_height/2 - rect_height - 1.7, "$\\bf{8\\ cm}$", fontsize=8)
ax.plot([0, 0], [-small_cylinder_height/2 - rect_height - 1.2, -small_cylinder_height/2 - rect_height - 1.4], color='black')
ax.plot([ellipse_width / 2, ellipse_width / 2], [-small_cylinder_height/2 - rect_height - 1.2, -small_cylinder_height/2 - rect_height - 1.4], color='black')
ax.add_patch(top_ellipse)
ax.add_patch(top_inner_ellipse)

bottom_inner_ellipse = patches.Arc(
    (0, -small_cylinder_height/2), ellipse_width, ellipse_height*2, theta1=-211, theta2=31, linewidth=1.2, color='black'
)
ax.add_patch(bottom_inner_ellipse)

ax.add_line(plt.Line2D(
    [small_cylinder_width/2, small_cylinder_width/2], 
    [-small_cylinder_height/2, small_cylinder_height/2 - 1],
    color='black'
))
ax.add_line(plt.Line2D(
    [-small_cylinder_width/2, -small_cylinder_width/2], 
    [-small_cylinder_height/2, small_cylinder_height/2 - 1],
    color='black'
))

mid_top = (0, small_cylinder_height/2)
mid_bottom = (0, -small_cylinder_height/2)

mid_ellipse_bottom =  patches.Arc(
    mid_bottom, small_cylinder_width, small_ellipse_height, theta1=180, theta2=360, color='black'
)
ax.add_patch(mid_ellipse_bottom)

ax.set_xlim(-6, 6)
ax.set_ylim(-10, 7)
ax.set_aspect('equal')
ax.axis('off')

plt.show()[/python]

Answer: $874.93$