function A = accumarrayStable2(varargin)
subs = varargin{1};
val = varargin{2};
if numel(varargin)>2 && ~isempty(varargin{3})
sz = varargin{3};
else
sz = max(subs,[],1);
end
[~, I] = sort(subs*cumprod([1,sz(1:end-1)]).');
A = accumarray(subs(I,:), val(I), sz, varargin{4:end});
ZnVuY3Rpb24gQSA9IGFjY3VtYXJyYXlTdGFibGUyKHZhcmFyZ2luKQpzdWJzID0gdmFyYXJnaW57MX07CnZhbCA9IHZhcmFyZ2luezJ9OwppZiBudW1lbCh2YXJhcmdpbik+MiAmJiB+aXNlbXB0eSh2YXJhcmdpbnszfSkKICAgIHN6ID0gdmFyYXJnaW57M307CmVsc2UKICAgIHN6ID0gbWF4KHN1YnMsW10sMSk7CmVuZApbfiwgSV0gPSBzb3J0KHN1YnMqY3VtcHJvZChbMSxzeigxOmVuZC0xKV0pLicpOwpBID0gYWNjdW1hcnJheShzdWJzKEksOiksIHZhbChJKSwgc3osIHZhcmFyZ2luezQ6ZW5kfSk7