@xoma2 все дело в box-sizing (почитать можно тут: htmlbook.ru/css/box-sizing). Обычно ширина элемента не включает в себя padding, с использованием же box-sizing мы можем заставить браузер высчитывать ширину элемента вместе с его внутренними отступами. Margin же не считается потому, что это отступы от элемента (которые не связаны с его шириной).
@lexxpavlov мои мысли крутились главным образом вокруг алгоритмов с вычленением повторяющегося ряда с сохранением индекса и отдельной их сортировки, а этот вариант казался нерабочим, из-за того, что фактически мы сначала сортируем по одному параметру, а потом вдруг сортируем по другому... @smanioso да, конечно)