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
sub2Lin = @(subs) (subs-1)*cumprod([1,sz(1:end-1)]).'+1;
[subs, I] = sort(sub2Lin(subs));
A = reshape(accumarray(subs, val(I), [prod(sz),1], varargin{4:end}), sz);
ZnVuY3Rpb24gQSA9IGFjY3VtYXJyYXlTdGFibGUyKHZhcmFyZ2luKQpzdWJzID0gdmFyYXJnaW57MX07CnZhbCA9IHZhcmFyZ2luezJ9OwppZiBudW1lbCh2YXJhcmdpbik+MiAmJiB+aXNlbXB0eSh2YXJhcmdpbnszfSkKICAgIHN6ID0gdmFyYXJnaW57M307CmVsc2UKICAgIHN6ID0gbWF4KHN1YnMsW10sMSk7CmVuZApzdWIyTGluID0gQChzdWJzKSAoc3Vicy0xKSpjdW1wcm9kKFsxLHN6KDE6ZW5kLTEpXSkuJysxOwpbc3VicywgSV0gPSBzb3J0KHN1YjJMaW4oc3VicykpOwpBID0gcmVzaGFwZShhY2N1bWFycmF5KHN1YnMsIHZhbChJKSwgW3Byb2Qoc3opLDFdLCB2YXJhcmdpbns0OmVuZH0pLCBzeik7Cg==