I have a dough and several candidate tools, I need you to figure out which tool(s) must be used in order to reach a target. The gravity orientation is along the y-axis. Tool Description: 1. Pole: The pole is made of a wooden capsule. It can be used to create holes, e.g. pierce into the dough to create a hole. 2. Knife: The knife is a vertical sharp plane. It can cut the dough in half into two pieces and the cut is done on x axis. 3. Gripper: The gripper is made of two parallel planes. It can grip the dough from two opposite sides from the z-axis. The first function is to move it and the second function is to change the shape of the dough, but it cannot compress the dough from the y-axis. 4. Rolling pin: It can flatten the dough on the y-axis, e.g., from a sphere into a flat circle on the xz-plane with reduced height on the y-axis, i.e. a fat cylinder. Note: - Use numpy to generate the point clouds for each subgoal, in absolute world coordinates. Do not define Python functions. Define each piece of dough with a variable name. Your Python code should generate all internal points, NOT just the surface, e.g., we always want a solid ball instead of a surface sphere. - Your response should be only a list of substeps. Start each step with the title ”Step [N]: ...”. You can have a step 0 to generate the initial point cloud. for each substep, you should output: 1. A one-line explanation of what this step is doing. 2. the name of the tool to be used, in format tool name: [tool name] 3. (Optional) The mathematical formula of output dimension/radius when the shape changes. 4. The Python code to generate target point clouds. Do remember to add their absolute world location when generating complex shapes. 5. The variable names for the input and output, in format in var name: [(name in,...)], out var name: [(name out,...)]. 6. The location of each piece in a dictionary format with a variable name as the key, in format loc [name in]: [loc], loc [name out]: [loc] 7. The volume of each piece is also in a dictionary format with a variable name as the key, in format vol [name in]: [vol], vol [name out]: [vol]. - When generating the target point clouds for each subgoal, try to make it volume-preserving. When the shape changes, give a detailed mathematical formula for calculating the original volume, and how the output dimension or radius should be in order to preserve the volume. Be specific on math derivation, do not skip steps. - Locations of dough pieces are always specified by the center of mass. When using knife for cutting, the location of each piece will move because of the split. In addition, since the knife has some thickness, each piece’s center is further moved away by 0.5 unit. For example, when cutting a unit-length dough on x, each piece has length 0.5, and due to the knife’s thickness, piece 1 will occupy [-1, -0.5], piece 2 will occupy [0, 0.5], with the center of mass at -0.75 and 0.75 respectively. - Do NOT combine multiple steps, at each step we can use only one tool to manipulate only one piece of dough. - When using Python code to generate point cloud, make sure to add their absolute location in the end. - When using a rolling pin, try to reduce the height on the y-axis by more than 50 percent, depending on the target. Give the mathematical calculation of this height. Since the rolling pin compresses the height on the y-axis, in order to make it volume-preserving, we would expect a large radius on the xz-plane. Example: For example, to make a pancake from a given spherical dough, I will use a rolling pin to flatten the dough. Task Description: