function compare($l, $r)
{
    if (is_int($l) && is_int($r)) {
        return $r <=> $l;
    }
    [$l, $r] = [(array) $l, (array) $r];
    while (!empty($l) && !empty($r)) {
        $compare = compare(array_shift($l), array_shift($r));
        if ($compare) return $compare;
    }
    if (empty($l) && empty($r)) return 0;
    if (empty($l)) return 1;
    if (empty($r)) return -1;
    return 0;
}
$pairs = $input->split("\n\n")->map(fn($pair) => $pair->split("\n")->map("json_decode"));
// ==================================================
// > SOLUTIONS
// ==================================================
$solution_1 = $pairs->map((
    fn ($pair, $index) => compare($pair[0], $pair[1]) == 1 ? $index + 1 : 0
), true)->sum();
$solution_2 = $pairs
    ->merge([[[2]], [[6]]])->merge()
    ->sort("compare")->reverse()
    ->map("json_encode")->keep(["[2]", "[6]"])->keys()
    ->map(fn($key) => $key + 1)->multiply();