function almostMagicSquare(array $a): array
{
$rowSum = $colSum = array_fill(0, 3, 0);
$maxSum = 0;
$a = array_chunk($a, 3);
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$rowSum[$i] += $a[$i][$j];
$colSum[$i] += $a[$j][$i];
}
}
foreach ($rowSum as $k => $v) {
$maxSum = max($maxSum, $v);
$maxSum = max($maxSum, $colSum[$k]);
}
for ($i = 0, $j = 0; $i < 3 && $j < 3;) {
$diff = min($maxSum - $rowSum[$i], $maxSum - $colSum[$j]);
$a[$i][$j] += $diff;
$rowSum[$i] += $diff;
$colSum[$j] += $diff;
if ($rowSum[$i] === $maxSum) {
$i++;
}
if ($colSum[$j] === $maxSum) {
$j++;
}
}
return array_merge([], ...$a);
}