
(function(){var ns=rx.namespace('algo');ns.union=function(ils){function union2(a,b){var ptrs=[0,0],res=[],choice,s,e,slot,cur,al=a.length,bl=b.length;for(;;){if(ptrs[0]<al&&ptrs[1]<bl){choice=a[ptrs[0]][0]<b[ptrs[1]][0];slot=choice?0:1;cur=(choice?a:b)[ptrs[slot]++];}else if(ptrs[0]<al)cur=a[ptrs[0]++];else if(ptrs[1]<bl)cur=b[ptrs[1]++];else break;if(cur[0]<=e)e=e>cur[1]?e:cur[1];else{res.push([s,e]);s=cur[0],e=cur[1];}}
res.push([s,e]);res.splice(0,1);return res;}
var i=0,il=ils[i++],ilsl=ils.length;while(i<ilsl)il=union2(il,ils[i++]||[]);return il||[];};ns.arraycmp=function(a,b){for(var i=0;;++i){if(a[i]===undefined&&b[i]===undefined)return 0;if(a[i]===undefined||a[i]<b[i])return-1;if(b[i]===undefined||b[i]<a[i])return 1;}};ns.roundrobin=function(arr){var result=[];for(var i=0;;++i){var pre=result.length;for(var j=0;j<arr.length;++j){if(i<arr[j].length)
result.push(arr[j][i]);}
if(pre==result.length)return result;}};})();