#!/usr/bin/perl
use strict;
use warnings;

my @DATA;
while(<DATA>) { # Получение входных данных и запуск рабочей процедуры на них
        chomp;
        @DATA = split /\s+/;
        next if @DATA < 3; # Не обрабатываем строки с менее чем 3 элементами
        work();
}

sub work {
        # Массив позиций разделителей с дополнительныйми элементами по краям
        # для контроля по ним выходов за границы массива (сокращает количество проверок границ)
        # Содержит начало данных, левый разделитель (после первого элемента),
        # правый разделитель (второй с конца), конец данных
        my $border = [ 0, 1, @DATA-1, @DATA-0 ];
        # Текущие суммы разделенных частей массива, в тех же элементах (по номеру) что и позиции границ
        my $sum = [ 0, $DATA[0], 0, $DATA[$border->[2]] ];
        # Вычисляем сумму элементов средней части (массива без крайних элементов)
        $sum->[2]+=$_ for @DATA[1..$border->[2]-1];
        # Рабочий цикл, боюсь делать while(1)
        for(1..1000) {
                my $ch = change($border, $sum, 1) + # Двигаем левый разделитель
                                 change($border, $sum, 2);  # Двигаем правый разделитель
                last unless $ch; # Завершаем цикл если ни одна граница не двигалась
        }
        # Печать результата
        print join('+', @DATA[0..$border->[1]-1]), "=$sum->[1] // ";
        print join('+', @DATA[$border->[1]..$border->[2]-1]), "=$sum->[2] // ";
        print join('+', @DATA[$border->[2]..@DATA-1]), "=$sum->[3]\n";
}

sub change {
        # Движение одного разделителя в сторону "улучшения равномерности сумм"
        # Параметры: Описания границ, Текущие суммы, Номер разделителя
        my($border, $sum, $pos) = @_;
        my $n1 = $sum->[$pos];   # Сумма левее разделителя
        my $n2 = $sum->[$pos+1]; # Сумма правее разделителя
        # Получаем направление движения границы +1 вправо, -1 влево
        # Если суммы одинаковы, направление 0 - выходим
        (my $sign = $n2 <=> $n1) || return 0;
        my $i = $border->[$pos]; # Текущая позиция в массиве данных
        # Выходим если движение в нужную сторону не возможно, так как упираемся в другой разделитель
        return 0 if $border->[$pos+$sign] == $i+$sign;
        my $oldDelta = abs($n1 - $n2);  # Текущая разница сумм
        if($sign > 0) { # движение вправо
                $n1 += $DATA[ $i ];
                $n2 -= $DATA[ $i ];
        } else { # движение влево
                $n1 -= $DATA[ $i-1 ];
                $n2 += $DATA[ $i-1 ];
        }
        my $newDelta = abs($n1 - $n2);  # Новая разность сумм
#       print "pos: $pos [$border->[$pos]],   sign: $sign n1: $n1,  n2: $n2 nD: $newDelta, oD: $oldDelta\n";
        return 0 if $newDelta >= $oldDelta; # Выходим ничего не меняя, если результат не улучшился
        # Движение в выбранную сторону улучшает результат, сохраняем новые суммы и позицию
        $sum->[$pos] = $n1;
        $sum->[$pos+1] = $n2;
        $border->[$pos]+=$sign;
        return 1;
}
__DATA__
1 2 3 100
1 2 3 100 101 102 140
4 4 4 4
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 200 1 1

