x={o->(o-o[0])?o[o.indexOf(o.min())]+=1:o<<1;o}
verify={i,o->a=x(i.toList());println a==o?"Pass ${i}->${o}=${a}":"Fail ${i}->${o}!=${a}";a}
verify([1],[1, 1])
verify([2],[2, 1])
verify([1, 1],[1, 1, 1])
verify([3, 3, 3, 3, 3],[3, 3, 3, 3, 3, 1])
verify([1, 2],[2, 2])
verify([2, 1],[2, 2])
verify([3, 1, 1],[3, 2, 1])
verify([3, 2, 1],[3, 2, 2])
verify([3, 2, 2],[3, 3, 2])
verify([3, 3, 2],[3, 3, 3])
verify([3, 4, 9, 3],[4, 4, 9, 3])
eD17by0+KG8tb1swXSk/b1tvLmluZGV4T2Yoby5taW4oKSldKz0xOm88PDE7b30KdmVyaWZ5PXtpLG8tPmE9eChpLnRvTGlzdCgpKTtwcmludGxuIGE9PW8/IlBhc3MgJHtpfS0+JHtvfT0ke2F9IjoiRmFpbCAke2l9LT4ke299IT0ke2F9IjthfQp2ZXJpZnkoWzFdLFsxLCAxXSkKdmVyaWZ5KFsyXSxbMiwgMV0pCnZlcmlmeShbMSwgMV0sWzEsIDEsIDFdKQp2ZXJpZnkoWzMsIDMsIDMsIDMsIDNdLFszLCAzLCAzLCAzLCAzLCAxXSkKCnZlcmlmeShbMSwgMl0sWzIsIDJdKQp2ZXJpZnkoWzIsIDFdLFsyLCAyXSkKdmVyaWZ5KFszLCAxLCAxXSxbMywgMiwgMV0pCnZlcmlmeShbMywgMiwgMV0sWzMsIDIsIDJdKQp2ZXJpZnkoWzMsIDIsIDJdLFszLCAzLCAyXSkKdmVyaWZ5KFszLCAzLCAyXSxbMywgMywgM10pCnZlcmlmeShbMywgNCwgOSwgM10sWzQsIDQsIDksIDNdKQ==
Pass [1]->[1, 1]=[1, 1]
Pass [2]->[2, 1]=[2, 1]
Pass [1, 1]->[1, 1, 1]=[1, 1, 1]
Pass [3, 3, 3, 3, 3]->[3, 3, 3, 3, 3, 1]=[3, 3, 3, 3, 3, 1]
Pass [1, 2]->[2, 2]=[2, 2]
Pass [2, 1]->[2, 2]=[2, 2]
Pass [3, 1, 1]->[3, 2, 1]=[3, 2, 1]
Pass [3, 2, 1]->[3, 2, 2]=[3, 2, 2]
Pass [3, 2, 2]->[3, 3, 2]=[3, 3, 2]
Pass [3, 3, 2]->[3, 3, 3]=[3, 3, 3]
Pass [3, 4, 9, 3]->[4, 4, 9, 3]=[4, 4, 9, 3]
Java HotSpot(TM) Client VM warning: No monotonic clock was available - timed services may be adversely affected if the time-of-day clock changes