{
  "slug": "radix-sort",
  "title": "Radix Sort",
  "category": "Sorting",
  "difficulty": "hard",
  "complexity": {
    "time": "O(d · (n + b))",
    "space": "O(n + b)"
  },
  "idea": "Sort the numbers by their last digit, then the next digit, and so on. Each pass is a stable counting sort on one digit (base 10). After the most-significant digit, the whole array is sorted.",
  "code": [
    "for each digit position (1s, 10s, 100s, …):",
    "    count how many numbers have each digit 0–9",
    "    running-sum the counts into positions",
    "    place numbers into output by that digit (stable)",
    "    copy output back into the array"
  ],
  "example": {
    "array": [
      170,
      45,
      75,
      90,
      24,
      2,
      66
    ]
  },
  "invariant": "Each step is the real data structure at that step — the picture is a pure function of it.",
  "stepCount": 53,
  "steps": [
    {
      "i": 0,
      "op": "lanes",
      "caption": "Radix sort: stably sort by each digit, least-significant first.",
      "note": null,
      "codeLine": null,
      "stats": null,
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 1,
      "op": "lanes",
      "caption": "Pass 1: sort by the ones digit.",
      "note": null,
      "codeLine": 1,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 2,
      "op": "lanes",
      "caption": "170: ones digit is 0 → counts[0] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            "read",
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 3,
      "op": "lanes",
      "caption": "45: ones digit is 5 → counts[5] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            "read",
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            0,
            0,
            0,
            0,
            1,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "write",
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 4,
      "op": "lanes",
      "caption": "75: ones digit is 5 → counts[5] = 2.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            "read",
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            0,
            0,
            0,
            0,
            2,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "write",
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 5,
      "op": "lanes",
      "caption": "90: ones digit is 0 → counts[0] = 2.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            null,
            "read",
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            2,
            0,
            0,
            0,
            0,
            2,
            0,
            0,
            0,
            0
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 6,
      "op": "lanes",
      "caption": "24: ones digit is 4 → counts[4] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "read",
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            2,
            0,
            0,
            0,
            1,
            2,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "write",
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 7,
      "op": "lanes",
      "caption": "2: ones digit is 2 → counts[2] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "read",
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            2,
            0,
            1,
            0,
            1,
            2,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 8,
      "op": "lanes",
      "caption": "66: ones digit is 6 → counts[6] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "read"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            2,
            0,
            1,
            0,
            1,
            2,
            1,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "write",
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 9,
      "op": "lanes",
      "caption": "Running-sum the digit counts into positions.",
      "note": null,
      "codeLine": 3,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            2,
            2,
            3,
            3,
            4,
            6,
            7,
            7,
            7,
            7
          ],
          "focus": [
            "read",
            "read",
            "read",
            "read",
            "read",
            "read",
            "read",
            "read",
            "read",
            "read"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 10,
      "op": "lanes",
      "caption": "Place 66 at output[6] (digit 6).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "read"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            2,
            2,
            3,
            3,
            4,
            6,
            6,
            7,
            7,
            7
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "write",
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "insert"
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            false
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 11,
      "op": "lanes",
      "caption": "Place 2 at output[2] (digit 2).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "read",
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            2,
            2,
            2,
            3,
            4,
            6,
            6,
            7,
            7,
            7
          ],
          "focus": [
            null,
            null,
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            2,
            0,
            0,
            0,
            66
          ],
          "focus": [
            null,
            null,
            "insert",
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            false,
            true,
            true,
            true,
            false
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 12,
      "op": "lanes",
      "caption": "Place 24 at output[3] (digit 4).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "read",
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            2,
            2,
            2,
            3,
            3,
            6,
            6,
            7,
            7,
            7
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "write",
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            2,
            24,
            0,
            0,
            66
          ],
          "focus": [
            null,
            null,
            null,
            "insert",
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            false,
            false,
            true,
            true,
            false
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 13,
      "op": "lanes",
      "caption": "Place 90 at output[1] (digit 0).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            null,
            "read",
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            2,
            2,
            3,
            3,
            6,
            6,
            7,
            7,
            7
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            90,
            2,
            24,
            0,
            0,
            66
          ],
          "focus": [
            null,
            "insert",
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            false,
            false,
            false,
            true,
            true,
            false
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 14,
      "op": "lanes",
      "caption": "Place 75 at output[5] (digit 5).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            null,
            "read",
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            2,
            2,
            3,
            3,
            5,
            6,
            7,
            7,
            7
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "write",
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            90,
            2,
            24,
            0,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "insert",
            null
          ],
          "placeholders": [
            true,
            false,
            false,
            false,
            true,
            false,
            false
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 15,
      "op": "lanes",
      "caption": "Place 45 at output[4] (digit 5).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            null,
            "read",
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            2,
            2,
            3,
            3,
            4,
            6,
            7,
            7,
            7
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "write",
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "insert",
            null,
            null
          ],
          "placeholders": [
            true,
            false,
            false,
            false,
            false,
            false,
            false
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 16,
      "op": "lanes",
      "caption": "Place 170 at output[0] (digit 0).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            45,
            75,
            90,
            24,
            2,
            66
          ],
          "focus": [
            "read",
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            2,
            2,
            3,
            3,
            4,
            6,
            7,
            7,
            7
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            "insert",
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 17,
      "op": "lanes",
      "caption": "Copy the output back — the array is now sorted by the ones digit.",
      "note": null,
      "codeLine": 5,
      "stats": {
        "pass": 1
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            "write",
            "write",
            "write",
            "write",
            "write",
            "write",
            "write"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            2,
            2,
            3,
            3,
            4,
            6,
            7,
            7,
            7
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 18,
      "op": "lanes",
      "caption": "Pass 2: sort by the tens digit.",
      "note": null,
      "codeLine": 1,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 19,
      "op": "lanes",
      "caption": "170: tens digit is 7 → counts[7] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            "read",
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            1,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            "write",
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 20,
      "op": "lanes",
      "caption": "90: tens digit is 9 → counts[9] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            "read",
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            1,
            0,
            1
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            "write"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 21,
      "op": "lanes",
      "caption": "2: tens digit is 0 → counts[0] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            "read",
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            0,
            0,
            0,
            0,
            0,
            0,
            1,
            0,
            1
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 22,
      "op": "lanes",
      "caption": "24: tens digit is 2 → counts[2] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            "read",
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            0,
            1,
            0,
            0,
            0,
            0,
            1,
            0,
            1
          ],
          "focus": [
            null,
            null,
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 23,
      "op": "lanes",
      "caption": "45: tens digit is 4 → counts[4] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "read",
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            0,
            1,
            0,
            1,
            0,
            0,
            1,
            0,
            1
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "write",
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 24,
      "op": "lanes",
      "caption": "75: tens digit is 7 → counts[7] = 2.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "read",
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            0,
            1,
            0,
            1,
            0,
            0,
            2,
            0,
            1
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            "write",
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 25,
      "op": "lanes",
      "caption": "66: tens digit is 6 → counts[6] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "read"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            0,
            1,
            0,
            1,
            0,
            1,
            2,
            0,
            1
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "write",
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 26,
      "op": "lanes",
      "caption": "Running-sum the digit counts into positions.",
      "note": null,
      "codeLine": 3,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            1,
            2,
            2,
            3,
            3,
            4,
            6,
            6,
            7
          ],
          "focus": [
            "read",
            "read",
            "read",
            "read",
            "read",
            "read",
            "read",
            "read",
            "read",
            "read"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 27,
      "op": "lanes",
      "caption": "Place 66 at output[3] (digit 6).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "read"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            1,
            2,
            2,
            3,
            3,
            3,
            6,
            6,
            7
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "write",
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            66,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            "insert",
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            false,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 28,
      "op": "lanes",
      "caption": "Place 75 at output[5] (digit 7).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "read",
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            1,
            2,
            2,
            3,
            3,
            3,
            5,
            6,
            7
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            "write",
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            66,
            0,
            75,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "insert",
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            false,
            true,
            false,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 29,
      "op": "lanes",
      "caption": "Place 45 at output[2] (digit 4).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "read",
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            1,
            2,
            2,
            2,
            3,
            3,
            5,
            6,
            7
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "write",
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            45,
            66,
            0,
            75,
            0
          ],
          "focus": [
            null,
            null,
            "insert",
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            false,
            false,
            true,
            false,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 30,
      "op": "lanes",
      "caption": "Place 24 at output[1] (digit 2).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            null,
            "read",
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            1,
            1,
            2,
            2,
            3,
            3,
            5,
            6,
            7
          ],
          "focus": [
            null,
            null,
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            24,
            45,
            66,
            0,
            75,
            0
          ],
          "focus": [
            null,
            "insert",
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            false,
            false,
            false,
            true,
            false,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 31,
      "op": "lanes",
      "caption": "Place 2 at output[0] (digit 0).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            null,
            "read",
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            1,
            1,
            2,
            2,
            3,
            3,
            5,
            6,
            7
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            2,
            24,
            45,
            66,
            0,
            75,
            0
          ],
          "focus": [
            "insert",
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            false,
            false,
            false,
            false,
            true,
            false,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 32,
      "op": "lanes",
      "caption": "Place 90 at output[6] (digit 9).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            null,
            "read",
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            1,
            1,
            2,
            2,
            3,
            3,
            5,
            6,
            6
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            "write"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            2,
            24,
            45,
            66,
            0,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "insert"
          ],
          "placeholders": [
            false,
            false,
            false,
            false,
            true,
            false,
            false
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 33,
      "op": "lanes",
      "caption": "Place 170 at output[4] (digit 7).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            170,
            90,
            2,
            24,
            45,
            75,
            66
          ],
          "focus": [
            "read",
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            1,
            1,
            2,
            2,
            3,
            3,
            4,
            6,
            6
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            "write",
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "insert",
            null,
            null
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 34,
      "op": "lanes",
      "caption": "Copy the output back — the array is now sorted by the tens digit.",
      "note": null,
      "codeLine": 5,
      "stats": {
        "pass": 2
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            "write",
            "write",
            "write",
            "write",
            "write",
            "write",
            "write"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            1,
            1,
            2,
            2,
            3,
            3,
            4,
            6,
            6
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 35,
      "op": "lanes",
      "caption": "Pass 3: sort by the hundreds digit.",
      "note": null,
      "codeLine": 1,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 36,
      "op": "lanes",
      "caption": "2: hundreds digit is 0 → counts[0] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            "read",
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 37,
      "op": "lanes",
      "caption": "24: hundreds digit is 0 → counts[0] = 2.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            "read",
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            2,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 38,
      "op": "lanes",
      "caption": "45: hundreds digit is 0 → counts[0] = 3.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            "read",
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            3,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 39,
      "op": "lanes",
      "caption": "66: hundreds digit is 0 → counts[0] = 4.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            "read",
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            4,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 40,
      "op": "lanes",
      "caption": "170: hundreds digit is 1 → counts[1] = 1.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "read",
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            4,
            1,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 41,
      "op": "lanes",
      "caption": "75: hundreds digit is 0 → counts[0] = 5.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "read",
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            5,
            1,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 42,
      "op": "lanes",
      "caption": "90: hundreds digit is 0 → counts[0] = 6.",
      "note": null,
      "codeLine": 2,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "read"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            6,
            1,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 43,
      "op": "lanes",
      "caption": "Running-sum the digit counts into positions.",
      "note": null,
      "codeLine": 3,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            6,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7
          ],
          "focus": [
            "read",
            "read",
            "read",
            "read",
            "read",
            "read",
            "read",
            "read",
            "read",
            "read"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            true,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 44,
      "op": "lanes",
      "caption": "Place 90 at output[5] (digit 0).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "read"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            5,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            0,
            90,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "insert",
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            true,
            false,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 45,
      "op": "lanes",
      "caption": "Place 75 at output[4] (digit 0).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            "read",
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            4,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            75,
            90,
            0
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "insert",
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            false,
            false,
            true
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 46,
      "op": "lanes",
      "caption": "Place 170 at output[6] (digit 1).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            null,
            "read",
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            4,
            6,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7
          ],
          "focus": [
            null,
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            0,
            75,
            90,
            170
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            "insert"
          ],
          "placeholders": [
            true,
            true,
            true,
            true,
            false,
            false,
            false
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 47,
      "op": "lanes",
      "caption": "Place 66 at output[3] (digit 0).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            null,
            "read",
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            3,
            6,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            0,
            66,
            75,
            90,
            170
          ],
          "focus": [
            null,
            null,
            null,
            "insert",
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            true,
            false,
            false,
            false,
            false
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 48,
      "op": "lanes",
      "caption": "Place 45 at output[2] (digit 0).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            null,
            "read",
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            2,
            6,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            0,
            45,
            66,
            75,
            90,
            170
          ],
          "focus": [
            null,
            null,
            "insert",
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            true,
            false,
            false,
            false,
            false,
            false
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 49,
      "op": "lanes",
      "caption": "Place 24 at output[1] (digit 0).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            null,
            "read",
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            1,
            6,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            0,
            24,
            45,
            66,
            75,
            90,
            170
          ],
          "focus": [
            null,
            "insert",
            null,
            null,
            null,
            null,
            null
          ],
          "placeholders": [
            true,
            false,
            false,
            false,
            false,
            false,
            false
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 50,
      "op": "lanes",
      "caption": "Place 2 at output[0] (digit 0).",
      "note": null,
      "codeLine": 4,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            170,
            75,
            90
          ],
          "focus": [
            "read",
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            6,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7
          ],
          "focus": [
            "write",
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            2,
            24,
            45,
            66,
            75,
            90,
            170
          ],
          "focus": [
            "insert",
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 51,
      "op": "lanes",
      "caption": "Copy the output back — the array is now sorted by the hundreds digit.",
      "note": null,
      "codeLine": 5,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            75,
            90,
            170
          ],
          "focus": [
            "write",
            "write",
            "write",
            "write",
            "write",
            "write",
            "write"
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            6,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            2,
            24,
            45,
            66,
            75,
            90,
            170
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        }
      ]
    },
    {
      "i": 52,
      "op": "lanes",
      "caption": "Sorted — once the most-significant digit is done, the whole array is ordered.",
      "note": null,
      "codeLine": 5,
      "stats": {
        "pass": 3
      },
      "lanes": [
        {
          "id": "arr",
          "label": "array",
          "array": [
            2,
            24,
            45,
            66,
            75,
            90,
            170
          ],
          "focus": [
            "settled",
            "settled",
            "settled",
            "settled",
            "settled",
            "settled",
            "settled"
          ],
          "markers": [],
          "regions": [
            {
              "label": "done",
              "from": 0,
              "to": 6,
              "tone": "settled"
            }
          ]
        },
        {
          "id": "count",
          "label": "digit counts (0–9)",
          "array": [
            0,
            6,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        },
        {
          "id": "out",
          "label": "output",
          "array": [
            2,
            24,
            45,
            66,
            75,
            90,
            170
          ],
          "focus": [
            null,
            null,
            null,
            null,
            null,
            null,
            null
          ],
          "markers": [],
          "regions": []
        }
      ]
    }
  ]
}