Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: W -> S
The puzzle images already show the roll path and the observed path-face states.

2-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C035
- net_layout: standard_cross
- difficulty: 1
- move_count: 2
- roll_sequence (N=up, S=down, W=left, E=right): W -> S
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=Z, rotation=180, flipVertical=true
- step 2: patternId=arrow_left, rotation=90, flipVertical=true
- allowed patternId values for this task: Z, arrow_left, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: W -> N -> S
The puzzle images already show the roll path and the observed path-face states.

3-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C036
- net_layout: standard_cross
- difficulty: 1
- move_count: 3
- roll_sequence (N=up, S=down, W=left, E=right): W -> N -> S
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=circle, rotation=0, flipVertical=true
- step 2: patternId=arrow_up, rotation=180, flipVertical=true
- step 3: patternId=circle, rotation=0, flipVertical=true
- allowed patternId values for this task: circle, arrow_up, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: N -> W
The puzzle images already show the roll path and the observed path-face states.

2-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C037
- net_layout: standard_cross
- difficulty: 1
- move_count: 2
- roll_sequence (N=up, S=down, W=left, E=right): N -> W
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=H, rotation=270, flipVertical=true
- step 2: patternId=2, rotation=0, flipVertical=true
- allowed patternId values for this task: H, 2, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: N -> E
The puzzle images already show the roll path and the observed path-face states.

2-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C038
- net_layout: standard_cross
- difficulty: 1
- move_count: 2
- roll_sequence (N=up, S=down, W=left, E=right): N -> E
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=Q, rotation=270, flipVertical=true
- step 2: patternId=P, rotation=180, flipVertical=true
- allowed patternId values for this task: Q, P, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: W -> N
The puzzle images already show the roll path and the observed path-face states.

2-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C039
- net_layout: standard_cross
- difficulty: 1
- move_count: 2
- roll_sequence (N=up, S=down, W=left, E=right): W -> N
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=I, rotation=0, flipVertical=true
- step 2: patternId=B, rotation=90, flipVertical=true
- allowed patternId values for this task: I, B, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


2-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C040
- net_layout: standard_cross
- difficulty: 1
- move_count: 2
- roll_sequence (N=up, S=down, W=left, E=right): N -> W
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=I, rotation=0, flipVertical=true
- step 2: patternId=smile, rotation=0, flipVertical=true
- allowed patternId values for this task: I, smile, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: E -> S
The puzzle images already show the roll path and the observed path-face states.

2-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C041
- net_layout: standard_cross
- difficulty: 1
- move_count: 2
- roll_sequence (N=up, S=down, W=left, E=right): E -> S
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=6, rotation=0, flipVertical=true
- step 2: patternId=star, rotation=90, flipVertical=true
- allowed patternId values for this task: 6, star, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: S -> W
The puzzle images already show the roll path and the observed path-face states.

2-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C042
- net_layout: standard_cross
- difficulty: 1
- move_count: 2
- roll_sequence (N=up, S=down, W=left, E=right): S -> W
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=arrow_left, rotation=90, flipVertical=true
- step 2: patternId=star, rotation=270, flipVertical=true
- allowed patternId values for this task: arrow_left, star, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


2-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C043
- net_layout: standard_cross
- difficulty: 1
- move_count: 2
- roll_sequence (N=up, S=down, W=left, E=right): N -> E
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=P, rotation=270, flipVertical=true
- step 2: patternId=S, rotation=270, flipVertical=true
- allowed patternId values for this task: P, S, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: W -> W -> W
The puzzle images already show the roll path and the observed path-face states.

3-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C044
- net_layout: standard_cross
- difficulty: 1
- move_count: 3
- roll_sequence (N=up, S=down, W=left, E=right): W -> W -> W
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=smile, rotation=180, flipVertical=true
- step 2: patternId=heart, rotation=180, flipVertical=true
- step 3: patternId=7, rotation=0, flipVertical=true
- allowed patternId values for this task: smile, heart, 7, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: E -> N -> E
The puzzle images already show the roll path and the observed path-face states.

3-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C045
- net_layout: standard_cross
- difficulty: 1
- move_count: 3
- roll_sequence (N=up, S=down, W=left, E=right): E -> N -> E
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=U, rotation=270, flipVertical=true
- step 2: patternId=D, rotation=270, flipVertical=true
- step 3: patternId=circle, rotation=180, flipVertical=true
- allowed patternId values for this task: U, D, circle, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: W -> W -> E
The puzzle images already show the roll path and the observed path-face states.

3-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C046
- net_layout: standard_cross
- difficulty: 1
- move_count: 3
- roll_sequence (N=up, S=down, W=left, E=right): W -> W -> E
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=C, rotation=0, flipVertical=true
- step 2: patternId=arrow_left, rotation=270, flipVertical=true
- step 3: patternId=C, rotation=0, flipVertical=true
- allowed patternId values for this task: C, arrow_left, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: W -> W -> N
The puzzle images already show the roll path and the observed path-face states.

3-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C047
- net_layout: standard_cross
- difficulty: 1
- move_count: 3
- roll_sequence (N=up, S=down, W=left, E=right): W -> W -> N
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=H, rotation=0, flipVertical=true
- step 2: patternId=N, rotation=180, flipVertical=true
- step 3: patternId=arrow_up, rotation=270, flipVertical=true
- allowed patternId values for this task: H, N, arrow_up, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: S -> W -> W
The puzzle images already show the roll path and the observed path-face states.

3-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C048
- net_layout: standard_cross
- difficulty: 1
- move_count: 3
- roll_sequence (N=up, S=down, W=left, E=right): S -> W -> W
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=smile, rotation=180, flipVertical=true
- step 2: patternId=A, rotation=270, flipVertical=true
- step 3: patternId=plus, rotation=90, flipVertical=true
- allowed patternId values for this task: smile, A, plus, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: S -> S -> E
The puzzle images already show the roll path and the observed path-face states.

3-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C049
- net_layout: standard_cross
- difficulty: 1
- move_count: 3
- roll_sequence (N=up, S=down, W=left, E=right): S -> S -> E
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=D, rotation=0, flipVertical=true
- step 2: patternId=V, rotation=180, flipVertical=true
- step 3: patternId=Y, rotation=180, flipVertical=true
- allowed patternId values for this task: D, V, Y, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


Task: reconstruct the six outer faces of the cube from the blank cross net image and the path-view observation image.
The net uses the fixed face names TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
If a face cannot be uniquely determined, output patternId='?' and rotation=0.
Roll sequence: W -> E -> N
The puzzle images already show the roll path and the observed path-face states.

3-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C050
- net_layout: standard_cross
- difficulty: 1
- move_count: 3
- roll_sequence (N=up, S=down, W=left, E=right): W -> E -> N
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=P, rotation=180, flipVertical=true
- step 2: patternId=8, rotation=0, flipVertical=true
- step 3: patternId=3, rotation=180, flipVertical=true
- allowed patternId values for this task: P, 8, 3, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.


3-move reconstruct puzzle

System:
You are a cube-reconstruction puzzle solver. Given a blank cross net of a cube and a top-down path image showing the bottom-face imprints stamped onto the road as the cube rolls, you reconstruct the patternId and rotation of every outer face.

You will receive: (a) one blank cross-net image (the unfolded outer surface, with the six face slots TOP/BOTTOM/FRONT/BACK/LEFT/RIGHT), (b) one path-sequence image (top-down view of the cube's roll path with the bottom-face imprints visible), and (c) a structured text body listing the roll sequence, observed path faces, and the allowed patternId values for this task.

You may reason step by step before the final answer. Place your final answer on the very last line of your reply, in the form: FINAL_JSON: <one-line JSON>

The JSON object must follow the faces schema described in section 8 of the user prompt. Do NOT wrap FINAL_JSON in Markdown code fences. Do NOT write anything after the FINAL_JSON line. Emit exactly one FINAL_JSON line.

If a face cannot be uniquely determined from the inputs, output patternId="?" and rotation=0 for that face. Always emit a complete FINAL_JSON line covering all six face keys; never refuse, never return prose only.

## 1. TASK
Reconstruct the patternId and absolute rotation of every face of a cube from a roll-trace image.
The puzzle is solved when every output face matches the cube's true outer-surface configuration; faces that cannot be uniquely determined are reported with patternId="?" and rotation=0.

## 2. WORLD MODEL
- Cube: a unit cube with one pattern printed on each of its six outer faces. Faces are named by their orientation in the world frame: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- Cross net: the unfolded outer surface laid flat in a cross shape. Each cell of the cross is one face of the cube.
- Roll: tipping the cube 90° about one of its bottom edges into an adjacent grid cell.
- Path imprint / bottom-face stamp: as the cube rolls, the face touching the ground stamps that face's pattern (rotated according to the roll) onto the grid cell it lay on. The path-sequence image shows these imprints from a top-down view.
- patternId: the symbolic name of a face's printed pattern (e.g. "smile", "triangle", "5"). The literal string "?" denotes "cannot be uniquely determined".
- rotation: an integer in {0, 90, 180, 270} measured clockwise from the pattern's upright orientation when the face is viewed from outside the cube.

## 3. VISUAL LEGEND
- Blank cross net image: shows the six face slots arranged in a cross with TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT labelled.
- Path sequence image: a top-down grid showing the cube's start cell, the roll path, and the bottom-face imprints stamped along the path. Each imprint is the bottom-face pattern at the moment the cube rested on that cell, viewed from above (NOT viewed from underneath looking up).
- Coordinate system: top-down, with grid cell positions used to locate imprints; rotations are expressed in degrees clockwise.

## 4. INPUT FIELDS
- sample_id: C051
- net_layout: standard_cross
- difficulty: 1
- move_count: 3
- roll_sequence (N=up, S=down, W=left, E=right): W -> W -> W
- observed_path_faces (one entry per stamped imprint, in roll order):
- step 1: patternId=star, rotation=90, flipVertical=true
- step 2: patternId=6, rotation=180, flipVertical=true
- step 3: patternId=L, rotation=270, flipVertical=true
- allowed patternId values for this task: star, 6, L, ?

## 5. ACTION VOCABULARY
A complete answer is one map from face name to its `(patternId, rotation)` pair:
- face: one of {"TOP", "BOTTOM", "FRONT", "BACK", "LEFT", "RIGHT"}.
- patternId: a string drawn from the allowed list above, or the literal "?" sentinel.
- rotation: integer in {0, 90, 180, 270}.
A face is "uniquely determined" iff the inputs (roll sequence, observed imprints, blank net) constrain its pattern and rotation to exactly one possibility.

## 6. CONSTRAINTS
- The output must list all six face keys exactly: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT (no extras, no omissions).
- Each `patternId` must come from the allowed list, or be the literal "?".
- When `patternId == "?"`, `rotation` must be 0.
- Each rotation must be one of 0, 90, 180, 270.
- Do not invent new patternIds. The model is scored only against the listed allowed values plus "?".

## 7. SOLVING ADVICE
- Trace the roll one step at a time: which face becomes the bottom after each roll? The path imprint at that step records that face.
- When a stamped imprint is rotated relative to the original pattern's upright orientation, infer the cumulative rotation that the rolling chain has applied to that face.
- Faces that never touch the ground may not appear in the imprints; if no other constraint pins them, they are "?".

## 8. OUTPUT SCHEMA
FINAL_JSON: {"faces":{"TOP":{"patternId":<string>,"rotation":<int>},"BOTTOM":{...},"FRONT":{...},"BACK":{...},"LEFT":{...},"RIGHT":{...}}}
- faces: object with exactly six keys TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT.
- patternId: string from the allowed list, or "?".
- rotation: integer in {0, 90, 180, 270}; 0 when patternId is "?".

## 9. FINAL INSTRUCTION
You may include reasoning above, but the very last line of your reply must start with FINAL_JSON: followed by exactly one valid JSON object.
Do not wrap FINAL_JSON in code fences and do not write anything after it.