/** * * Abacus * Combinatorics and Algebraic Number Theory Symbolic Computation library for Javascript * @version: 1.0.8 * https://github.com/foo123/Abacus **/ !function(t,n,e){"use strict";"undefined"!=typeof Components&&"object"==typeof Components.classes&&"object"==typeof Components.classesByID&&Components.utils&&"function"==typeof Components.utils.import?(t.$deps=t.$deps||{})&&(t.EXPORTED_SYMBOLS=[n])&&(t[n]=t.$deps[n]=e.call(t)):"object"==typeof module&&module.exports?(module.$deps=module.$deps||{})&&(module.exports=module.$deps[n]=e.call(t)):"function"==typeof define&&define.amd&&"function"==typeof require&&"function"==typeof require.specified&&require.specified(n)?define(n,["module"],function(n){return e.moduleUri=n.uri,e.call(t)}):n in t||(t[n]=e.call(t)||1)&&"function"==typeof define&&define.amd&&define(function(){return t[n]})}("undefined"!=typeof self?self:this,"Abacus",function(){"use strict";function c(){return Object.create(null)}function r(){for(var n,t,e=arguments,r=e.length,i=(r?e[0]:{})||{},u=1;ue[h]||-1===r&&ae[h]||-1===r&&t[a]e[g][0]?(n[_++]=v=t[d],d+=f):(1===r&&t[d][0]>e[g][0]||-1===r&&t[d][0]e[g][1]?(n[_++]=v=t[d],b&&(n[_++]=e[g])):(n[_++]=v=e[g],b&&(n[_++]=t[d])),d+=f),g+=a):1===r&&t[d]e[g]?(n[_++]=v=t[d],d+=f):(1===r&&t[d]>e[g]||-1===r&&t[d]>=1;return i?Ln(e,e,1):e}function Yn(n,t,e,r){var i,u,l,s=n.length;if(null==e&&(e=0),null==r&&(r=s-1),null==t||0===t){for(t=0,u=n[e],i=e+1;i<=r;i++){if(u<(l=n[i])){if(-1===t)return 0;0===t&&(t=1)}else if(l>>1],t)?r=l+1:i=l;else for(;r>>1])?i=l:r=l+1;return r}function rt(n,t,e){var r=n.length;return e=e||" ",r>=1,n=mt(n,n,e);else for(r=u.II;!u.equ(t,l);)u.equ(s,u.mod(t,r))&&(i=mt(i,n,e)),t=u.div(t,r),n=mt(n,n,e);return i}function at(n,t){var e,r,i=X.Arithmetic,u=i.O,l=i.I;i.num;if(i.gt(u,t))return null;if(i.equ(u,t))return l;if(i.equ(l,t))return n;if(r=l,i.isDefault()||i.lte(t,mn))for(t=i.val(t);0!==t;)1&t&&(r=i.mul(r,n)),t>>=1,n=i.mul(n,n);else for(e=i.II;!i.equ(u,t);)i.equ(l,i.mod(t,e))&&(r=i.mul(r,n)),t=i.div(t,e),n=i.mul(n,n);return r}function ht(n){var t,e,r,i,u,l,s=X.Arithmetic,o=(s.num,s.O),m=s.I;if(s.equ(n,o)||s.equ(n,m))return n;if(s.isDefault()||s.lte(n,mn))return s.num(z.floor(z.sqrt(s.val(n))));for(l=s.II,t=m,e=s.div(n,l),u=t;s.lte(t,e);){if(r=s.div(s.add(t,e),l),i=s.mul(r,r),s.equ(i,n))return r;s.lt(i,n)?(t=s.add(r,m),u=r):e=s.sub(r,m)}return u}function dt(n,t){var e,r;return 0===(t=+t)?null:(t<0&&(n=1/n,t=-t),1===t?n:(1==(e=1&t)&&n<0&&(n=-n),r=z.pow(n,1/t),t=z.pow(r,t),z.abs(n-t)<1&&0o&&(h++,i.terms.length>=e||e<=h))););return 0===h&&t.mod(a).equ(c)?i.abs():i}function vt(n,t){var e,r,i,u=X.Arithmetic,l=u.O,s=u.I,o=u.II,m=p.Epsilon();if(t.equ(l))return null;if(Dn(n,f)&&(n.equ(l)||n.equ(s))||u.isNumber(n)&&(u.equ(l,n)||u.equ(s,n)))return n;if(n=(u=u.isNumber(n)||Dn(n,M)?p:n[B]).cast(n),Zn(u,p)&&n.lt(l)&&t.mod(o).equ(l)&&(n=(u=v).cast(n)),t.lt(l)&&(n=n.inv(),t=t.neg()),t.equ(s))return n;if(e=Zn(u,Z)?new u(_t(n.num,t),_t(n.den,t)):Zn(u,p)?new u(gt(n.num,t.num),gt(n.den,t.num)):Zn(u,v)?!n.isReal()||!n.real().gte(l)&&t.mod(o).equ(l)?new u(s,s):new u(p(gt(n.real().num,t.num),gt(n.real().den,t.num)),p.Zero()):u.One(),i=t.sub(s),Zn(u,v))for(;;){if((r=n.div(e.pow(i)).sub(e).div(t)).real().abs().lte(m)&&r.imag().abs().lte(m))break;e=e.add(r)}else for(;;){if((r=n.div(e.pow(i)).sub(e).div(t)).abs().lte(m))break;e=e.add(r)}return e}function bt(n,t,e){var r,i,u,l,s,o,m=X.Arithmetic,c=m.num,f=m.O,a=m.J,h=m.I,d=m.II;if(m.lt(t,f)||m.equ(f,m.mod(t,d)))return null;if((m.lt(n,f)||m.gt(n,t))&&(n=m.mod(n,t)),m.equ(f,n))return m.equ(h,t)?h:f;if(m.equ(h,t)||m.equ(h,n))return h;if(null==e&&(e=Dt(n,t)),!m.equ(h,e))return f;for(u=c(3),l=c(4),s=c(5),o=c(8),r=h,m.lt(n,f)&&(n=m.mul(a,n),m.equ(m.mod(t,l),u)&&(r=m.mul(a,r)));!m.equ(f,n);){for(;m.gt(n,f)&&m.equ(f,m.mod(n,d));)n=m.div(n,d),i=m.mod(t,o),(m.equ(i,u)||m.equ(i,s))&&(r=m.mul(a,r));i=n,n=t,t=i,m.equ(u,m.mod(n,l))&&m.equ(u,m.mod(t,l))&&(r=m.mul(a,r)),n=m.mod(n,t)}return m.equ(h,t)||(r=f),r}function pt(n,t){var e=X.Arithmetic,r=(e.num,e.I),i=e.II;return ft(n,e.div(e.sub(t,r),i),t)}function xt(n,t){var e,r,i,u,l,s,o,m,c,f,a,h,d=X.Arithmetic,g=(d.num,d.O),_=d.I;if(!d.equ(_,pt(n,t)))return null;for(e=d.II,i=r=d.sub(t,_),u=0;d.equ(g,d.mod(i,e));)i=d.div(i,e),u+=1;if(1===u)return ft(n,d.div(d.add(t,_),4),t);for(l=g;d.lt(l,t)&&!d.equ(r,pt(l,t));l=d.add(l,_));for(s=ft(l,i,t),o=ft(n,d.div(d.add(i,_),e),t),m=ft(n,i,t),c=u,f=g;!d.equ(g,d.mod(d.sub(m,_),t));){for(f=mt(m,m,t),h=1;hs&&(o.length=s),o}(Rt(t),Rt(e.div(n,t)))),r?t.map(function(n){return[new r(n[0]),new r(n[1])]}):t}function Mt(n,t){return n===t}function Zt(n,t,e){var r,i,u,l;for(e=e||Mt,r=n(t),i=n(r);!e(r,i);)r=n(r),i=n(n(i));for(u=0,r=t;!e(r,i);)r=n(r),i=n(i),u++;for(l=1,i=n(r);!e(r,i);)i=n(i),l++;return[l,u]}function Dt(){var n,t,e,r,i=arguments.length&&(wn(arguments[0])||Sn(arguments[0]))?arguments[0]:arguments,u=i.length,l=X.Arithmetic,s=(l.num,l.O),o=l.I;if(0===u)return s;for(r=0;r(n=_.cast(n)).length&&(n=n.concat($n(i-n.length,function(n){return v}))),s=(l=t.t().ref(!0))[0],_=l[3],o=l[1].length,c=_.t(),m=s.t(),d=new Array(u),g=new Array(u-o),f=0;f>>1;return i.mul(n(t,e,u),n(t,1+u,r))}(l,0,l.length-1)},u=function n(t,e){if(f.lt(t,d))return h;var r=n(f.div(t,d),e);return f.mul(f.mul(r,r),i(t,e))};return f.lt(t,d)?h:(n=f.sub(t,f.digits(t,2).split("").reduce(function(n,t){return f.add(n,"1"===t?h:a)},a)),e=(r=j()).get(function(n){return f.lte(n,t)}),r.dispose(),f.mul(u(t,e),Yt(n)))}function ee(e,n){var t,r,i,u=X.Arithmetic,l=u.O,s=u.I,o=u.J,m=u.II,c=u.num,f=u.val,a=u.add,h=u.sub,d=u.div,g=u.mul,_=u.mod,v=l,b=X.Options.MAXMEM;if(Dn(e,M))return new e[B](ee(e.num,n));if(e=c(e),null==n){if(u.lte(e,12))return u.lt(e,l)?l:c([1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600][f(e)]);if(u.gte(e,100))return te(e);t=String(e),null==ee.mem1[t]?(v=g(ee(h(e,s)),e),u.lt(e,b)&&(ee.mem1[t]=v)):v=ee.mem1[t]}else if(!1===n){if(u.lte(e,12))return u.equ(e,l)?s:u.lte(e,s)?l:c([1,2,9,44,265,1854,14833,133496,1334961,14684570,176214841][f(h(e,m))]);if(t="!"+String(e),null==ee.mem2[t]){if(u.gt(e,1e4))for(i=s,r=v=l;u.lte(r,e);r=a(r,s))v=a(v,g(i,g(ee(e,r),ee(h(e,r))))),i=u.neg(i);else v=a(u.equ(l,_(e,m))?s:o,g(ee(h(e,s),!1),e));u.lt(e,b)&&(ee.mem2[t]=v)}else v=ee.mem2[t]}else if(!0===n){if(u.lte(e,18))return u.lt(e,l)?l:c([1,1,2,4,10,26,76,232,764,2620,9496,35696,140152,568504,2390480,10349536,46206736,211799312,997313824][f(e)]);t="I"+String(e),null==ee.mem2[t]?(v=a(ee(h(e,s),!0),g(ee(h(e,m),!0),h(e,s))),u.lt(e,b)&&(ee.mem2[t]=v)):v=ee.mem2[t]}else if(wn(n)){if(!n.length)return u.lt(e,l)?l:ee(e);if(u.lt(e,l))return l;if(wn(n[0])){if(!(n=n[0]).length)return u.lt(e,l)?l:ee(e);if(1===n.length)return ee(e,n[0]);if(v=kn(function(n,t){return a(n,t)},l,n),u.equ(v,l))return e;if(u.gt(v,e))return l;if(t=String(e)+"@"+Kn(n.map(String),1,!0).join(",")+"@",null==ee.mem3[t]){for(r=h(v,s),v=s;u.gte(r,l);)v=g(v,h(e,r)),r=h(r,s);v=kn(function(n,t){return d(n,ee(t))},v,n),u.lt(e,b)&&(ee.mem3[t]=v)}else v=ee.mem3[t]}else t=String(e)+"@"+Kn(n.map(String),1,!0).join(","),null==ee.mem3[t]?(v=kn(function(n,t){return d(n,ee(t))},ee(e),n),u.lt(e,b)&&(ee.mem3[t]=v)):v=ee.mem3[t]}else if(u.isNumber(n)||Dn(n,M))if(n=Dn(n,M)?n.num:c(n),u.lt(n,l)){if(u.lte(e,u.neg(n)))return u.equ(e,u.neg(n))?ee(e):l;if(t=String(e)+"@"+String(n),null==ee.mem3[t]){if(r=a(e,n),u.gt(h(e,r),500))v=d(ee(e),ee(r));else for(v=r=a(r,s);u.lt(r,e);)v=g(v,r=a(r,s));u.lt(e,b)&&(ee.mem3[t]=v)}else v=ee.mem3[t]}else{if(u.lt(n,l)||u.lt(e,l)||u.gt(n,e))return l;if(u.lt(e,g(n,m))&&(n=h(e,n)),u.equ(n,l)||u.equ(e,s))return s;if(u.equ(n,s))return e;if(t=String(e)+"@"+String(n),null==ee.mem3[t]){if(u.lte(e,20))v=a(ee(h(e,s),h(n,s)),ee(h(e,s),n));else if(u.isDefault())v=z.round(kn(function(n,t){return n*(1+e/t)},1+(e-=n),null,2,n));else if(r=h(e,n),u.gt(h(e,r),500))v=d(ee(e),g(ee(n),ee(r)));else{for(v=r=a(r,s);u.lt(r,e);)v=g(v,r=a(r,s));v=d(v,ee(n))}u.lt(e,b)&&(ee.mem3[t]=v)}else v=ee.mem3[t]}return v}function re(n,t){var e,r,i,u,l=X.Arithmetic,s=l.O,o=l.I,m=(l.J,l.num),c=l.add,f=l.sub,a=l.mul,h=X.Options.MAXMEM;if(Dn(n,M))return new n[B](re(n.num,t));if(n=m(n),t=Dn(t,M)?t.num:m(t),l.lt(n,s)||l.lt(t,s)||l.gt(t,n))return s;if(l.equ(t,s))return ee(n);if(l.equ(t,n))return ee(n,!1);if(m=String(n)+","+String(t),null==re.mem[m]){if(e=s,u=f(n,t),l.lt(u,t))for(r=s;l.lte(r,u);r=c(r,o))e=c(e,a(ee(u,r),ee(c(t,r),!1)));else for(i=o,r=s;l.lte(r,t);r=c(r,o))e=c(e,a(i,a(ee(t,r),ee(f(n,r))))),i=l.neg(i);l.lt(n,h)&&(re.mem[m]=e)}else e=re.mem[m];return e}function ie(n,t,e,r,i){for(var u=X.Arithmetic,l=u.O,s=i.first();s&&s.index_&&(v.length=_),v}function pe(n,t,e,r,i){r=!0===r,e=e===A?A:q,i=i||D.Q();for(var u,l=0,s=0,o=0,m=n.length,c=t.length,f=new Array(m+c),a=X.Arithmetic.O;lo&&(f.length=o),f}function xe(t,e,r,i){r=r===A?A:q,i=i||D.Q();var n,u,l,s,o,m,c,f=X.Arithmetic.O;if(t.length>e.length&&(u=t,t=e,e=u),u=t.length,l=e.length,s=new Array(u*l),0n+1&&(s.length=n+1)}return s}function ye(n,t,e,r,i){r=!0===r,e=e===A?A:q,i=i||D.Q();var u,l,s,o=n.length,m=t.length,c=X.Arithmetic.O,f=g([],"max",function(n,t){return e.cmp(n.term,t.term)}),a=[],h=[],d=0;if(!t.length)return null;for(s=t[0].cast(i);(l=f.peek())||dl.n?f.replace({term:l.Q.mul(t[l.n].cast(i)),n:l.n+1,Q:l.Q}):f.pop(),d++):(u=l.term.neg(),m>l.n?f.replace({term:l.Q.mul(t[l.n].cast(i)),n:l.n+1,Q:l.Q}):f.pop()),u.equ(c)||(s.divides(u)?(a=pe(a,[l=u.div(s)],e,!1,i),1>>1<<1]),s[r]+=1,r>>>=1;return s[r]+=1,n[e]=t,n},n||new Array(r),t)}function Me(n,t,e){for(var r,i,u=t.length,l=z.ceil(Y(e||u)),s=1<=o[r<<=1]&&(t-=o[r],r++);return o[r]=0,n[e]=r-s,n},n||new Array(u),t)}function Ze(n,t,e,r){var i,u,l=X.Arithmetic,s=l.O;if(e+1===n)return l.I;for(r.rem(t),r.rem(e),i=r.last();i&&i.index>e;i=i.prev){for(r.rem(i),u=i.prev;u&&0<=u.index;u=u.prev)r.rem(u),s=l.add(s,l.add(Ze(n,u.index,i.index,r),i.index+1t)return!1;return!0!==e||r===t}function je(n){for(var t=n.length-1,e=-1,r=0,i=n[r];r="===e||"=>"===e?t<=l:l===t}function Je(n,t,e){if(e){if(!n||!n.length)return-1;for(var r,i,u,l=n.length,s=t.length,o=0;o>t},bor:function(n,t){return n|t},band:function(n,t){return n&t},xor:function(n,t){return n^t},abs:z.abs,min:z.min,max:z.max,rnd:Fe},X.Arithmetic=r({},t,{isDefault:function(){return 0===this.O&&this.add===it},neg:function(n){return X.Arithmetic.mul(X.Arithmetic.J,n)},abs:function(n){return X.Arithmetic.gt(X.Arithmetic.O,n)?X.Arithmetic.neg(n):n},min:function(n,t){return X.Arithmetic.lt(n,t)?n:t},max:function(n,t){return X.Arithmetic.gt(n,t)?n:t},divceil:function(n,t){if(null==t)return n;var e=X.Arithmetic,r=e.O,i=e.I,u=e.div(n,t);return!e.equ(r,e.mod(n,t))&&e.gt(n,r)===e.gt(t,r)?e.add(u,i):u}}),X.Math={rnd:z.random,rndInt:Fe,factorial:ee,stirling:ue,partitions:oe,compositions:fe,bell:he,catalan:ae,fibonacci:de,polygonal:ge,sum_nk:_e,sum:ut,product:lt,pow2:Yt,exp:ne,powsq:function(n,t){var e=X.Arithmetic;return t=Dn(t,M)?t.num:e.num(t),Dn(n,M)?new n[B](at(n.num,t)):at(e.num(n),t)},addm:function(n,t,e){var r=X.Arithmetic;return e=Dn(e,M)?e.num:r.num(e),t=Dn(t,M)?t.num:r.num(t),Dn(n,M)?new n[B](ot(n.num,t,e)):ot(r.num(n),t,e)},negm:function(n,t){var e=X.Arithmetic;return t=Dn(t,M)?t.num:e.num(t),Dn(n,M)?new n[B](st(n.num,t)):st(e.num(n),t)},mulm:function(n,t,e){var r=X.Arithmetic;return e=Dn(e,M)?e.num:r.num(e),t=Dn(t,M)?t.num:r.num(t),Dn(n,M)?new n[B](mt(n.num,t,e)):mt(r.num(n),t,e)},invm:function(n,t){var e=X.Arithmetic;return t=Dn(t,M)?t.num:e.num(t),Dn(n,M)?new n[B](ct(n.num,t)):ct(e.num(n),t)},powm:function(n,t,e){var r=X.Arithmetic;return e=Dn(e,M)?e.num:r.num(e),t=Dn(t,M)?t.num:r.num(t),Dn(n,M)?new n[B](ft(n.num,t,e)):ft(r.num(n),t,e)},isqrt:function(n){var t=X.Arithmetic;return Dn(n,M)?new n[B](ht(n.num)):ht(t.num(n))},ikthroot:function(n,t){var e=X.Arithmetic;return t=Dn(t,M)?t.num:e.num(t),Dn(n,M)?new n[B](gt(n.num,t)):gt(e.num(n),t)},isqrtp:function(n,t){var e=X.Arithmetic;return t=Dn(t,M)?t.num:e.num(t),Dn(n,M)?new n[B](xt(n.num,t)):xt(e.num(n),t)},ilog:function(n,t){var e=X.Arithmetic;return t=Dn(t,M)?t.num:e.num(t),Dn(n,M)?new n[B](yt(n.num,t)):yt(e.num(n),t)},divisors:function(n,t){var e=X.Arithmetic;return Ft(Dn(n,M)?n:e.num(n),!0===t)},legendre:function(n,t){var e=X.Arithmetic;return t=Dn(t,M)?t.num:e.num(t),Dn(n,M)?new n[B](pt(n.num,t)):pt(e.num(n),t)},jacobi:function(n,t){var e=X.Arithmetic;return t=Dn(t,M)?t.num:e.num(t),Dn(n,M)?new n[B](bt(n.num,t)):bt(e.num(n),t)},moebius:function(n){var t=X.Arithmetic;return Dn(n,M)?new n[B](Qt(n.num)):Qt(t.num(n))},pollardRho:function(n,t,e,r,i,u){var l,s=X.Arithmetic.num;return null!=e&&(e=Dn(e,M)?e.num:s(e)),null!=t&&(t=Dn(t,M)?t.num:s(t)),Dn(n,M)?null==(l=Nt(n.num,t,e,r,i||null,u||null))?l:new n[B](l):Nt(s(n),t,e,r,i||null,u||null)},factorize:function(n){var t=X.Arithmetic;return Rt(Dn(n,M)?n:t.num(n))},isProbablePrime:function(n){var t=X.Arithmetic;return wt(Dn(n,M)?n.num:t.num(n))},isPrime:function(n){var t=X.Arithmetic;return Ct(Dn(n,M)?n.num:t.num(n))},nextPrime:function(n,t){var e=X.Arithmetic;return function(n,t){var e,r=X.Arithmetic,i=(r.num,r.O),u=r.I,l=r.II;if((t=-1===t?-1:1)<0){if(r.lte(n,l))return null;if(r.equ(n,3))return l;for(e=r.sub(n,r.equ(i,r.mod(n,l))?u:l);;e=r.sub(e,l))if(wt(e)&&Ct(e))return e}else{if(r.lt(n,l))return l;for(e=r.add(n,r.equ(i,r.mod(n,l))?u:l);;e=r.add(e,l))if(wt(e)&&Ct(e))return e}}(Dn(n,M)?n.num:e.num(n),-1===t?-1:1)},gcd:function(){var t=X.Arithmetic,n=V.call(arguments.length&&(wn(arguments[0])||Sn(arguments[0]))?arguments[0]:arguments),e=null,n=Dt(n.map(function(n){return Dn(n,M)?(e=e||n[B],n.num):t.num(n)}));return e?new e(n):n},xgcd:function(){var t=X.Arithmetic,n=V.call(arguments.length&&(wn(arguments[0])||Sn(arguments[0]))?arguments[0]:arguments),e=null,n=Pt(n.map(function(n){return Dn(n,M)?(e=e||n[B],n.num):t.num(n)}));return e&&n?n.map(function(n){return new e(n)}):n},lcm:function(){var t=X.Arithmetic,n=V.call(arguments.length&&(wn(arguments[0])||Sn(arguments[0]))?arguments[0]:arguments),e=null,n=Tt(n.map(function(n){return Dn(n,M)?(e=e||n[B],n.num):t.num(n)}));return e?new e(n):n},diophantine:function(n,t,e,r){var i=X.Arithmetic;return(wn(n)||Sn(n))&&n.length?Wt(i.nums(n),i.num(t||0),e,!0===r):null},diophantines:function(n,t,e,r){var i=D.Z();return(Dn(n,E)||wn(n)||Sn(n))&&(!Dn(n,E)||n.nr&&n.nc)&&(Dn(n,E)||n.length)?(Dn(t,E)||wn(t)||Sn(t)||(t=$n(Dn(n,E)?n.nr:n.length,function(){return t||0})),Bt(n,t=Dn(t,E)?t:i.cast(t),e,!0===r)):null},congruence:function(n,t,e,r,i){var u,l,s,o,m,c,f=X.Arithmetic;return(wn(n)||Sn(n))&&n.length?(n=f.nums(n),t=f.num(t||0),u=f.num(e||0),l=r,i=!0===i,m=X.Arithmetic,c=m.O,n.length?(i=!0===i,(s=Wt(n.concat(u),t,l,i))&&i&&(o=s[1],s=s[0]),null==(s=null==s?null:$n(s.length-1,function(n){n=s[n];return!1===l?m.gt(c,n)&&(n=m.add(n,u)):n.c().real().lt(c)&&(n=n.add(u)),n}))?null:i?[s,o]:s):null):null},congruences:function(n,t,e,r,i){var u,l,s,o,m,c,f,a,h=D.Z();return(Dn(n,E)||wn(n)||Sn(n))&&(!Dn(n,E)||n.nr&&n.nc)&&(Dn(n,E)||n.length)?(n=Dn(n,E)?n:h.cast(n),Dn(t,E)||wn(t)||Sn(t)||(t=$n(Dn(n,E)?n.nr:n.length,function(){return t||0})),t=Dn(t,E)?t:h.cast(t),Dn(e,E)||wn(e)||Sn(e)||(e=$n(Dn(n,E)?n.nr:n.length,function(){return e||0})),e=Dn(e,E)?e:h.cast(e),u=n,h=t,l=e,s=r,n=!0===i,r=D.Z(),f=X.Arithmetic,a=r.Zero(),Dn(u,E)&&Zn(u.ring.NumberClass,M)||(u=E(r,u)),u.nr&&u.nc?(wn(l)||Sn(l)||Dn(l,E)||(l=$n(u.nr,function(n){return l})),(wn(l)||Sn(l))&&(l=E(r,l)),(wn(h)||Sn(h))&&(h=E(r,h)),i=l.col(0),m=r.lcm(i),u=u.concat(l),n=!0===n,null!=(o=Bt(u,h,s,!0))&&(c=o[1],o=o[0]),null==(o=null==o?null:$n(o.length-1,function(n){var t,e=o[n],r=!0;if(!1===s)f.gt(f.O,e)&&(e=f.add(e,m.num));else{for(t in e.terms)if(H.call(e.terms,t)&&"1"!==t&&f.equ(f.O,f.mod(m.num,e.terms[t].c().real().num))){r=!1;break}r&&(n=c.symbol+"_"+(c.length+1),c.push(n),e=e.add(N(C(n),m))),e.c().real().lt(a)&&(e=e.add(m))}return e}))?null:n?[o,c]:o):null):null},pythagorean:function(n,t){var e=X.Arithmetic;return(wn(n)||Sn(n))&&n.length?function(t,n){var e,r,i,u,l,s,o,m,c=X.Arithmetic,f=c.O,a=c.I,h=c.J,d=c.II,g=t.length,_=Nn(n)&&n.length?n:"i";if(!g)return null;if(m=t.filter(function(n){return 1===Vt(n)}).length,n=t.filter(function(n){return-1===Vt(n)}).length,1===g||0===m||0===n)return $n(g,function(){return R()});if(o=$n(g,function(n){return ht(c.abs(t[n]))}),g!==t.filter(function(n,t){return c.equ(c.abs(n),c.mul(o[t],o[t]))}).length)return $n(g,function(){return R()});if(u=$n(g-1,function(n){return _+"_"+(n+1)}),2===g)return[R(N(C(u[0]),o[1])),R(N(C(u[0]),o[0]))];for(Vt(t[0])+Vt(t[1])+Vt(t[2])<0&&(t=t.map(function(n){return c.neg(n)})),l=e=0;lr.length&&(r=r.concat($n(u.nc-r.length,function(n){return r[r.length-1].split("_")[0]+"_"+(r.length+n+1)}))),$n(i.nr,function(t){return R($n(u.nc,function(n){return N(C(r[n]),u.val[t][n])})).add(i.val[t][0])})):null):null):null},lineqs:function(n,t,e){var r=D.Q();return(Dn(n,E)||wn(n)||Sn(n))&&(!Dn(n,E)||n.nr&&n.nc)&&(Dn(n,E)||n.length)?(Dn(t,E)||wn(t)||Sn(t)||(t=$n(Dn(n,E)?n.nr:n.length,function(){return t||0})),function(t,e,r){var n,i,u,l,s,o,m,c,f,a,h,d;if(Dn(t,E)||(t=E(D.Q(),t)),!t.nr||!t.nc||t.ring!==D.Q())return null;for(e=E(t.ring,e).col(0),u=t.nc,l=t.nr,Nn(r=r||"x")?r=$n(u,function(n){return r+"_"+(n+1)}):wn(r)&&u>r.length&&(r=r.concat($n(u-r.length,function(n){return r[r.length-1].split("_")[0]+"_"+(r.length+n+1)}))),i=[],n=$n(l,function(n){return x.LTE(R(t.row(n).map(function(n,t){return N(C(r[t]),n)})),R(e[n]))}).slice(),s=u-1;0<=s;s--)if(c=[],f=[],a=[],n.forEach(function(n){var t=n.lhs.term(r[s]).c().sub(n.rhs.term(r[s]).c()),n=n.rhs.sub(n.rhs.term(r[s])).sub(n.lhs.sub(n.lhs.term(r[s])));t.gt(0)?c.push(n.div(t)):t.lt(0)?f.push(n.div(t)):a.push(n)}),c.length&&f.length){for(m=c.length*f.length+a.length,n=new Array(m),o=0;ol&&(u.length=l),u},intersection:function(n,t,e,r,i,u,l,s){r=-1===r?-1:1,null==i&&(i=0),null==u&&(u=t.length-1),null==l&&(l=0),null==s&&(s=e.length-1);var o=ue[h]?a+=o:(1===r&&t[a]>e[h]||-1===r&&t[a]r[a]?a+=m:(n[h++]=e[f],t[e[f]]--,f+=o);for(;0<=o*(u-f);)0>>1]))return s;l(o,n)?c=s-1:m=s+1}else for(;m>>1]))return s;l(n,o)?c=s-1:m=s+1}return-1},bisect:et,complementation:jn,reflection:Un,reversion:Jn,gray:Fn,igray:Qn,grayn:Gn,igrayn:Xn,finitedifference:Wn,partialsum:Bn,convolution:function(n,t,e){var r,i,u,l=n.length,s=t.length;if(!0===e)for(u=$n(l+s-1,function(){return 0}),r=0;r>>5]&1<<(31&n))},set:function(n){return this.bits[n>>>5]|=1<<(31&n),this},unset:function(n){return this.bits[n>>>5]&=~(1<<(31&n)),this},toggle:function(n){return this.bits[n>>>5]^=1<<(31&n),this}}),S=X.ListSet=function n(e){var t,r,i,u,l=this;if(!Dn(l,n))return new n(e);for(e=wn(e)?e.slice():new Array(+e),r=e.length,t=0;t=r)return l;t=n}return t.incl&&(i===t&&(i=t.next),u===t&&(u=t.prev),t.prev&&(t.prev.next=t.next),t.next&&(t.next.prev=t.prev),t.incl=!1),l},l.add=function(n){var t=null;if(n===+n){if(n<0||r<=n)return l;t=e[n]}else{if(!n||null==n.index)return l;if(n.index<0||n.index>=r)return l;t=n}return t.incl||(i===t.next&&(i=t),u===t.prev&&(u=t),t.prev&&(t.prev.next=t),t.next&&(t.next.prev=t),t.incl=!0),l},l.has=function(n){var t=null;if(n===+n){if(n<0||r<=n)return!1;t=e[n]}else{if(!n||null==n.index)return!1;if(n.index<0||n.index>=r)return!1;t=n}return t.incl},l.item=function(n){var t=null;if(n===+n){if(n<0||r<=n)return!1;t=e[n]}else{if(!n||null==n.index)return null;if(n.index<0||n.index>=r)return!1;t=n}return t},l.dispose=function(){return u=i=e=null,l}},b=X.Node=function n(t,e,r,i){var u=this;if(!Dn(u,n))return new n(t,e,r,i);u.v=t,u.l=e||null,u.r=r||null,u.t=i||null,u.dispose=function(){return u.v=null,u.l=null,u.r=null,u.t=null,u}},g=X.Heap=n({constructor:function n(t,e,r){var i=this;if(!Dn(i,n))return new n(t,e,r);e=String(e||"min").toLowerCase().slice(0,3),i.type="max"===e?"max":"min",Mn(r)||(r=n.CMP),i.cmp=r,t=t||[],i._h=n.heapify(t,i.type,i.cmp)},__static__:{CMP:function(n,t){return n>>1)-1;0<=r;r--)g._siftup_max(n,r,e);else for(r=(i>>>1)-1;0<=r;r--)g._siftup(n,r,e);return n},_siftdown:function(n,t,e,r){for(var i,u,l=n[e];t>>1])<0;)n[e]=u,e=i;n[e]=l},_siftup:function(n,t,e){for(var r,i=n.length,u=t,l=n[t],s=2*t+1;s>>1],l)<0;)n[e]=u,e=i;n[e]=l},_siftup_max:function(n,t,e){for(var r,i=n.length,u=t,l=n[t],s=2*t+1;s=_.length&&g.slice(-_.length)===_;)g=g.slice(0,-_.length);g.length||(g=null)}i=c.sub(c.pow(n,(g?g.length:0)+_.length),g?c.pow(n,g.length):a),r=c.add(c.mul(i,e),c.sub(h((g||"")+_),g?h(g):f))}else{for(;g&&"0"===g.slice(-1);)g=g.slice(0,-1);r=g&&g.length?(i=c.pow(n,g.length),c.add(c.mul(i,e),h(g))):(i=a,e),u[6]&&(s=h(u[6].slice(1)),c.lt(s,f)?i=c.mul(i,c.pow(n,c.neg(s))):r=c.mul(r,c.pow(n,s)))}return!1!==t&&(t=Dt(r,i),r=c.div(r,t),i=c.div(i,t)),o[0]=d?c.neg(r):r,o[1]=i,o}(n,!0);return n?p(n[0],n[1],!0):p.Zero()},fromString:function(n){var t,e,r,i=X.Arithmetic,u="+",l=p.Zero();if(!(n=tn(String(n))).length)return l;if("+"!==n.charAt(0)&&"-"!==n.charAt(0)||(u=n.charAt(0),n=tn(n.slice(1))),!n.length)return l;if("("===n.charAt(0)&&")"===n.charAt(n.length-1)&&(n=tn(n.slice(1,-1))),!n.length)return l;if(-1!==n.indexOf(".")||-1!==n.indexOf("e"))return t=p.fromDec(n),"-"===u&&(t=t.neg()),t;if(-1!==n.indexOf("\\frac")){if(!(t=n.match(/^(-)?\\frac\{(-?\d+)\}\{(-?\d+)\}$/)))return l;"-"===t[1]&&(u="-"===u?"+":"-"),e=i.num(t[2]),r=i.num(t[3])}else n=String(n).split("/"),e=i.num(n[0].length?n[0]:"0"),r=1>=1,e=e.mul(e);return t},rad:function(n){var t=this,e=X.Arithmetic;return(n=M.cast(n)).equ(e.I)?t:n.equ(e.II)?t.imag().equ(0)?t.real().lt(0)?v(p.Zero(),t.real().abs().rad(n)):v(t.real().rad(n),p.Zero()):(e=t.norm().rad(2),v(e.add(t.real()).div(2).rad(n),e.sub(t.real()).div(2).rad(n).mul(t.imag().lt(0)?-1:1))):vt(t,n)},simpl:function(){var n=this;return n._simpl||(n.re.simpl(),n.im.simpl(),n._str=null,n._strp=null,n._tex=null,n._simpl=!0),n},round:function(n){n=!1!==n;return v(this.re.round(n),this.im.round(n))},integer:function(){var n=this;return null==n._int&&(n._int=v(n.re.integer(),n.im.integer())),n._int},remainder:function(){var n=this;return null==n._rem&&(n._rem=v(n.re.remainder(),n.im.remainder())),n._rem},tuple:function(){return[this.re,this.im]},valueOf:function(){return this.re.valueOf()},toString:function(n){var t,e=this,r=X.Arithmetic,i=r.O;return null==e._str&&(t=e.re.equ(i),e._str=(t?"":e.re.toString())+(e.im.equ(i)?"":(!e.im.gt(i)||t?"":"+")+(e.im.equ(r.I)?"":e.im.equ(r.J)?"-":e.im.toString(!0)+"*")+v.Symbol),e._str.length||(e._str="0"),e._strp=(t?"":e.re.toString(!0))+(e.im.equ(i)?"":(!e.im.gt(i)||t?"":"+")+(e.im.equ(r.I)?"":e.im.equ(r.J)?"-":e.im.toString(!0)+"*")+v.Symbol),e._strp.length||(e._strp="0")),n?e._strp:e._str},toTex:function(){var n,t=this,e=X.Arithmetic,r=e.O;return null==t._tex&&(n=t.re.equ(r),t._tex=(n?"":t.re.toTex())+(t.im.equ(r)?"":(!t.im.gt(r)||n?"":"+")+(t.im.equ(e.I)?"":t.im.equ(e.J)?"-":t.im.toTex())+v.Symbol),t._tex.length||(t._tex="0")),t._tex},toDec:function(n){var t,e=this,r=X.Arithmetic,i=r.O;return null==e._dec&&(t=e.re.equ(i),e._dec=(t?"":e.re.toDec())+(e.im.equ(i)?"":(!e.im.gt(i)||t?"":"+")+(e.im.equ(r.I)?"":e.im.equ(r.J)?"-":e.im.toDec())+v.Symbol),e._dec.length||(e._dec="0")),Rn(n)&&0<=n?((r=((t=e.re.equ(i))?"":e.re.toDec(n))+(e.im.equ(i)?"":(!e.im.gt(i)||t?"":"+")+(e.im.equ(r.I)?"":e.im.equ(r.J)?"-":e.im.toDec(n))+v.Symbol)).length||(r="0",0>=1,e=e.mul(e);return t},rad:function(n){var t=this,e=X.Arithmetic,r=e.O,e=e.I;return n=M.cast(n),t.equ(r)?R():n.equ(r)?null:n.equ(e)?t:R(1===t.symbols().length?t.terms[1].rad(n):N(h(t,p(e,n.num)),e))},d:function(t,e){var r=this;return null==e&&(e=1),e=+e,t=String(t||"x"),e<0?null:R(r.symbols().map(function(n){return"1"===n?X.Arithmetic.O:r.terms[n].d(t,e)}))},evaluate:function(e){var r=this;X.Arithmetic.O;return e=e||{},r.symbols().reduce(function(n,t){return n.add(r.terms[t].evaluate(e))},v.Zero())},toString:function(){var n,t,e,r,i,u=this,l=X.Arithmetic.O,s="",o=!1;if(null==u._str){for(e=(n=u.symbols()).length,t=0;t"===n||"\\gt"===n?">":">="===n||"=>"===n||"\\le"===n?">=":"<="===n||"=<"===n||"\\ge"===n?"<=":"<>"===n||"!="===n||"\\ne"===n?"<>":"~"===n||"\\sim"===n?"~":"="},DUAL:function(n){return"<"===(n=x.OP(n))?">":">"===n?"<":">="===n?"<=":"<="===n?">=":n},EQU:function(n,t){return new x(n,"=",t)},NEQ:function(n,t){return new x(n,"<>",t)},LT:function(n,t){return new x(n,"<",t)},LTE:function(n,t){return new x(n,"<=",t)},GT:function(n,t){return new x(n,">",t)},GTE:function(n,t){return new x(n,">=",t)},SIM:function(n,t){return new x(n,"~",t)},fromString:function(r){var n=String(r).split(/\\sim|\\lt|\\gt|\\le|\\ge|\\ne|\\eq|=<|<=|>=|=>|<>|!=|<|>|=|~/gm),t=["\\sim","\\lt","\\gt","\\le","\\ge","\\ne","\\eq","=<","<=",">=","=>","<>","!=","<",">","=","~"].reduce(function(n,t){var e=r.indexOf(t);return-1"===t?e.gt(n):"<"===t?e.lt(n):">="===t?e.gte(n):"<="===t?e.lte(n):"<>"===t?!e.equ(n):"~"===t||e.equ(n)},toString:function(){var n=this.op;return this.lhs.toString()+" "+n+" "+this.rhs.toString()},toTex:function(){var n=this.op;return">="===n?n="\\ge":"<="===n?this.op="\\le":"<>"===n?this.op="\\ne":"~"===n&&(n="\\sim"),this.lhs.toTex()+" "+n+" "+this.rhs.toTex()}}),y=X.Func=n(t,{constructor:function t(n,e,r,i){if(!Dn(this,t))return new t(n,e,r,i);Dn(n,t)?(this.func=n.op,this.args=n.args,this._eval=r||n._eval,this._deriv=i||n._deriv):(n=String(n||"").toLowerCase(),null!=e&&e.length||(e=[]),this.op=n,this.args=e.map(function(n){return Dn(n,[R,d,t])||(n=d(n)),n}),this._eval=r||null,this._deriv=i||null)},__static__:{MIN:function(n){return y("min",n,Xe)},MAX:function(n){return y("max",n,Ge)}},args:null,_eval:null,_deriv:null,dispose:function(){return this._eval=null,this._deriv=null,this.args=null,this.op=null,this},clone:function(){return new this[B](this.op,this.args,this._eval,this._deriv)},isReal:function(){var n=self.args;return n.filter(function(n){return n.isReal()}).length===n.length},isImag:function(){var n=self.args;return n.filter(function(n){return n.isImag()}).length===n.length},real:function(){return y(this.op,this.args.map(function(n){return n.real()}),this._eval,this._deriv)},imag:function(){return y(this.op,this.args.map(function(n){return n.imag()}),this._eval,this._deriv)},equ:function(e){return Dn(e,y)?this.op===e.op&&this.args.filter(function(n,t){return tn.symbol?[n.symbol,t.symbol]:[t.symbol,n.symbol],w.Add(w(n,r,t.ring),w(t,r,t.ring),e);n.terms.length&&(t.terms=pe(t.terms,n.terms,q,!0===e,t.ring))}else(Dn(n,f)||i.isNumber(n))&&((n=q(n,0,t.ring)).equ(i.O)||(n=t.terms.length?pe([t.terms.pop()],[n],q,!0===e,t.ring):[n],t.terms=t.terms.concat(n)));return t},Mul:function(n,t){var e,r,i=X.Arithmetic,u=i.O;if(!t.terms.length)return t;if(Dn(n,I)){if(n.symbol!==t.symbol)return r=t.symbol>n.symbol?[n.symbol,t.symbol]:[t.symbol,n.symbol],w.Mul(w(n,r,n.ring),w(t,r,t.ring));t.terms=n.terms.length?xe(t.terms,n.terms,q,t.ring):[]}else if(Dn(n,f)||i.isNumber(n))if((n=t.ring.cast(n)).equ(u))t.terms=[];else if(!n.equ(i.I))for(e=t.terms.length-1;0<=e;e--)t.terms[e]=t.terms[e].mul(n);return t},Div:function(t,e,n){var r,i,u=X.Arithmetic,l=u.O,s=u.I;if(n=!0===n,Dn(e,I)){if(!e.terms.length)throw new Error("Division by zero in Abacus.Polynomial!");return e.isConst()?(i=(e=e.cc()).equ(s)?t:I($n(t.terms.length,function(n){return t.terms[n].div(e)}),t.symbol,t.ring),n?[i,I.Zero(t.symbol,t.ring)]:i):e.symbol===t.symbol?(i=ye(t.terms,e.terms,q,n,t.ring),n?[I(i[0],t.symbol,t.ring),I(i[1],t.symbol,t.ring)]:I(i,t.symbol,t.ring)):(r=t.symbol>e.symbol?[e.symbol,t.symbol]:[t.symbol,e.symbol],w.Div(w(t,r,t.ring),w(e,r,e.ring),n))}if(Dn(e,f)||u.isNumber(e)){if((e=t.ring.cast(e)).equ(l))throw new Error("Division by zero in Abacus.Polynomial!");return i=e.equ(s)?t:I($n(t.terms.length,function(n){return t.terms[n].div(e)}),t.symbol,t.ring),n?[i,I.Zero(t.symbol,t.ring)]:i}return t},C:function(n,t,e){return new I(n||X.Arithmetic.O,t||"x",e||D.Q())},gcd:Lt,xgcd:jt,lcm:Jt,bezier:function(n,t){t=String(t||"x");var e,r,i,u,l,s=D.Q(),o=I.Zero(t,s);if(wn(n)&&n.length)for(e=n.length,l=I([1,-1],t,s),i=I.One(t,s).shift(e-1),u=I.One(t,s),o=o.add(i.mul(s.cast(n[e-1]))),r=e-2;0<=r;r--)i=i.shift(-1),u=u.mul(l),o=o.add(u.mul(i).mul(ee(e-1,r)).mul(s.cast(n[r])));return o},bezierThrough:function(n,t){t=String(t||"x");var e,r,i,c=D.Q(),u=function(n){var t,e,r=n.length-1,i=new Array(r),u=new Array(r),l=new Array(r),s=new Array(r),o=new Array(r),m=new Array(r);for(l[0]=c.Zero(),s[0]=c.create(2),o[0]=c.One(),m[0]=n[0].add(n[1].mul(2)),t=1;tt.length+1&&t+"^"===r.slice(0,t.length+1)&&-1===r.indexOf("*")&&(s[r.slice(t.length+1)]=i));return new I(s,t,e)},fromString:function(n,t,e){var r,i,u,l,s=X.Arithmetic,o={},m=null,c=/(\(?(?:(?:[\+\-])?\s*\(?(?:(?:\\frac\{\-?\d+\}\{\-?\d+\})|(?:\-?\d+(?:\.\d*(?:\[\d+\])?)?(?:e-?\d+)?(?:\/\-?\d+)?))?\)?)(?:\s*(?:[\+\-])?\s*(?:\(?(?:(?:\\frac\{\-?\d+\}\{\-?\d+\})|(?:\-?\d+(?:\.\d*(?:\[\d+\])?)?(?:e-?\d+)?(?:\/\-?\d+)?))\)?\*?)?(?:[ij]))?\)?)?(?:\s*\*?\s*([a-zA-Z](?:_\{?\d+\}?)?)(?:\^\{?(\d+)\}?)?)?/g;if(e=e||D.Q(),!(n=tn(String(n))).length)return I.Zero(t||"x",e);for(;u=c.exec(n);){if(!u[0].length){if(c.lastIndex>=1,e=I.Mul(e,e);return t},rad:function(n){var t=X.Arithmetic;return(n=M.cast(n)).equ(t.I)?this:_t(this,n)},compose:function(n){var t,e,r,i,u=this,l=X.Arithmetic;l.O;if(Dn(n,N)&&(n=R(n)),Dn(n,R)&&(n=I.fromExpr(n,u.symbol,u.ring)),l.isNumber(n)||Dn(n,f))return I(u.evaluate(n),u.symbol,u.ring);if(Dn(n,I)){if(!u.terms.length)return I.Zero(n.symbol,u.ring);if(0===u.deg())return I(u.terms.slice(),n.symbol,u.ring);if(0===n.deg())return I(u.evaluate(n.cc()),n.symbol,u.ring);for(r=(e=u.terms)[0].e,t=I(e[0].c,n.symbol,u.ring),i=1;0=i.terms[0].e?I.Zero(i.symbol,i.ring):I(i.terms.map(function(n){if(r>n.e)return null;for(var t=u.I,e=n.e;e+r>n.e;e--)t=u.mul(t,e);return q(n.c.mul(t),n.e-r,i.ring)}).filter(q.isNonZero),i.symbol,i.ring)},polarForm:function(t){t=String(t||"u");var i=this.ring.associatedField(),u=this.deg(),l=$n(u,function(n){return t+"_"+(n+1)});return this.terms.reduce(function(n,e){if(!e.e)return n;var t=F(u,e.e),r=t.total();return t.get().reduce(function(n,t){return n.add(w(A(i.cast(e.c).div(r),$n(u,function(n){return-1===t.indexOf(n)?0:1})),l,i))},n)},w(A(this.cc(),$n(u,0)),l,i))},evaluate:function(n){var t,e,r,i=this.ring,u=X.Arithmetic,l=u.O,s=this.terms;if(!s.length)return i.Zero();for(Dn(n,f)||u.isNumber(n)||!Cn(n)||(n=n[this.symbol]),n=n||l,t=s[0].e,r=s[0].c,e=1;0=n.length&&e>=t.length?0:e>=t.length?0===n[e]?r(n,t,e+1):n[e]:e>=n.length?0===t[e]?r(n,t,e+1):-t[e]:n[e]===t[e]?r(n,t,e+1):n[e]-t[e]}if((wn(n)||Sn(n))&&(wn(t)||Sn(t)))return r(n,t,0);var i=r(n.e,t.e,0);return!0===e&&0===i?n.c.equ(t.c)?0:n.c.lt(t.c)?-1:1:i},sortDecr:function(n,t){return A.cmp(t,n)},gcd:function(t,e,n){return A(!0!==n||Dn(t.c,[w,Z,d])||Dn(e.c,[w,Z,d])||!t.ring.hasGCD()?t.ring.One():t.ring.gcd(t.c,e.c),$n(z.max(t.e.length,e.e.length),function(n){return n=e.length);t++)if(t>=r.length){if(0r[t])return!1;return!0},pow:function(t){var e=this;return 1===(t=+t)?e:A(e.c.pow(t),$n(e.e.length,function(n){return z.floor(e.e[n]*t)}),e.ring)},rad:function(t){var e=this;return 1===(t=+t)?e:A(e.c.rad(t),$n(e.e.length,function(n){return z.max(z.floor(e.e[n]/t),z.min(1,e.e[n]))}),e.ring)},toTerm:function(n,t,e,r,i){var u,l=this.e,s=this.c,o=X.Arithmetic;if(!0===r){if(u=n.reduce(function(n,t,e){return 0t.e[e])&&(n=t),n},null,r),!0===n?w([t],u,i):t):!0===n?w([],u,i):A(i.Zero(),$n(u.length,0),i):!0===n?w(r.length?[r[r.length-1]]:[],u,i):r.length?r[r.length-1]:A(0,$n(u.length,0),i)},lm:function(n){return(arguments.length?this.ltm(!1,n):this.ltm(!1)).e},lc:function(n){return(arguments.length?this.ltm(!1,n):this.ltm(!1)).c},tm:function(n){return(arguments.length?this.ttm(!1,n):this.ttm(!1)).e},tc:function(n){return(arguments.length?this.ttm(!1,n):this.ttm(!1)).c},cc:function(){var n=this.terms;return n.length&&0===A.cmp(n[n.length-1].e,[0])?n[n.length-1].c:this.ring.Zero()},c:function(){return this.cc()},recur:function(u){var l,s,n,t=this,e=t.terms,o=t.symbol,m=t.ring,r=X.Arithmetic,i=null;if(!1===u)return null==t._flat&&(t._flat=o.length<=1||!t.isRecur()?t:kn(function(n,t){return n._add(Dn(t.c,w)?w([A(m.One(),t.e,m)],o,m)._mul(t.c.recur(!1)):w([t],o,m))},w.Zero(o,m),e),t._flat._rsym=null,t._flat._flat=t._flat),t._flat;if(!0===u)return null==t._recur&&(t._recur=o.length<=1?t:kn(function(n,t){return n.recur(t)},t.recur(!1),o),t._recur._flat=t.recur(!1),t._recur._recur=t._recur),t._recur;if(wn(u))return kn(function(n,t){return n.recur(t)},t,u);if(u){if(o.length<=1)return t;if(u=String(u||"x"),-1===(l=o.indexOf(u))||t._rsym&&-1!==t._rsym.indexOf(u))return t;if(0===(s=t.maxdeg(u,!0)))return t._rsym=(t._rsym||[]).concat(u),t;for(n=w(kn(function(n,t){var e,r=t.e[l],i=s-r,t=Dn(t.c,w)?t.c.isUni(u)?w([t],o,m):((e=t.clone()).c=t.c.recur(u),e.e[l]=0,w([e],o,m)):0!==r?((e=t.clone()).e[l]=0,w([e],o,m)):w([t],o,m);return n[i]=n[i]?n[i]._add(t):t,n},new Array(s+1),e).map(function(n,t){return n.equ(r.O)?null:A(n,$n(o.length,function(n){return l===n?s-t:0}))}).filter(A.isNonZero),o,m);n.isConst()&&Dn(i=n.cc(),w);)n=i;return i===n&&(n=n.clone()),n._rsym=(t._rsym||[]).concat(u),n}return t},monic:function(){var n,t,e,r=this,i=X.Arithmetic,u=r.lc();if(u.equ(i.I)||u.equ(i.O)||Dn(u,w))return r;if(r.ring.isField())return w(r.terms.map(function(n){return n.div(u)}),r.symbol,r.ring);for(e=!0,n=(t=r.terms).length-1;0>=1,e=w.Mul(e,e,!1);return i&&(t=t.recur(i)),t},rad:function(n){var t=X.Arithmetic;return(n=M.cast(n)).equ(t.I)?this:_t(this,n)},compose:function(n){var f=this.symbol,a=this.ring,t=this._rsym,h=X.Arithmetic,d=w.Zero(f,a),g=c(),n=function n(t,e,r){for(r=r||0;r=f.length)return w(t.cc(),f,a);var i,u,l,s,o,m,c=t.terms;if(!c.length)return d;if(i=t.toString(),H.call(g,i))return g[i];for(o=H.call(e,f[r])?w(e[f[r]]||h.O,f,a):w([A(a.One(),$n(f.length,function(n){return n===r?1:0}),a)],f,a),m=Dn(c[0].c,w)?n(c[0].c,e,r+1):w(c[0].c,f,a),u=c[0].e[r],s=m,l=1;0this.maxdeg(r,!0)?w.Zero(n,l):w(this.terms.map(function(n){var t,e;return Dn((n=n.clone()).c,w)?(e=n.e[u],t=i,0=-i?n.e[u]+=i:n.c=l.Zero(),n}).filter(A.isNonZero).sort(A.sortDecr),n,l):w(this.terms.map(function(n){return Dn((n=n.clone()).c,w)&&0this.maxdeg(r,!0)?w.Zero(n,t):w(this.terms.map(function(n){var t,e;if(Dn(n.c,w)){if(n.c.isConst(!0)){if(i>n.e[u])return null;for(n=n.clone(),t=o,e=n.e[u];e+i>n.e[u];e--)t=l.mul(t,e);return n.c=n.c._mul(t),n.e[u]-=i,n}for(n=n.clone(),e=i;e--,n.c=n.c.d(r,1)._add(n.c._mul(n.e[u])),n.e[u]=z.max(n.e[u]-1,0),0n.e[u])return null;for(n=n.clone(),t=o,e=n.e[u];e+i>n.e[u];e--)t=l.mul(t,e);return n.c=n.c.mul(t),n.e[u]-=i,n}).filter(A.isNonZero).sort(A.sortDecr),n,t))},evaluate:function(n){var f=this.symbol,a=this.ring,h=X.Arithmetic.O,d=c();return function n(t,e,r){for(r=r||0;r=f.length)return t.cc();var i,u,l,s,o,m,c=t.terms;if(!c.length)return a.Zero();if(i=t.toString(),H.call(d,i))return d[i];for(o=(H.call(e,f[r])?e[f[r]]:h)||h,m=Dn(c[0].c,w)?n(c[0].c,e,r+1):c[0].c,u=c[0].e[r],s=m,l=1;0r[t]&&(r[t]=n.length):n.length>r&&(r=n.length),n});n=String(n);return wn(r)?n.length>r[0]&&(r[0]=n.length):n.length>r&&(r=n.length),n})).map(function(n,t){return e+(wn(n)?n.map(function(n,t){return rt(n,wn(r)?r[t]:r)}).join(" "):rt(n,wn(r)?r[0]:r))+e}).join("\n")},toTex:function(n,t){return wn(n)?"\\begin{"+(t="pmatrix"===t?"pmatrix":"bmatrix")+"}"+n.map(function(n){return wn(n)?n.map(Pn).join(" & "):Pn(n)}).join(" \\\\ ")+"\\end{"+t+"}":Pn(n)},toDec:function(n,e,r){if(!wn(n))return Mn(n.toDec)?n.toDec(e):String(n);r=String(r||"|");var i=wn(n[0])?$n(n[0].length,0):0;return(n=n.map(function(n,t){if(wn(n))return n.map(function(n,t){n=n.toDec(e);return wn(i)?n.length>i[t]&&(i[t]=n.length):n.length>i&&(i=n.length),n});n=n.toDec(e);return wn(i)?n.length>i[0]&&(i[0]=n.length):n.length>i&&(i=n.length),n})).map(function(n,t){return r+(wn(n)?n.map(function(n,t){return rt(n,wn(i)?i[t]:i)}).join(" "):rt(n,wn(i)?i[0]:i))+r}).join("\n")}},nr:0,nc:0,val:null,ring:null,_str:null,_tex:null,_n:null,_t:null,_h:null,_a:null,_i:null,_gi:null,_p:null,_snf:null,_lu:null,_qr:null,_ldl:null,_ref:null,_rref:null,_rf:null,_evd:null,_svd:null,_rn:null,_ln:null,_rs:null,_cs:null,_tr:null,_det:null,dispose:function(){var n=this;return n._n&&n===n._n._n&&(n._n._n=null),n._t&&n===n._t._t&&(n._t._t=null),n._h&&n===n._h._h&&(n._h._h=null),n._i&&n===n._i._i&&(n._i._i=null),n._gi&&n===n._gi._gi&&(n._gi._gi=null),n.nr=null,n.nc=null,n.val=null,n.ring=null,n._str=null,n._tex=null,n._n=null,n._t=null,n._h=null,n._a=null,n._i=null,n._gi=null,n._p=null,n._snf=null,n._lu=null,n._qr=null,n._ldl=null,n._ref=null,n._rref=null,n._rf=null,n._evd=null,n._svd=null,n._rn=null,n._ln=null,n._rs=null,n._cs=null,n._tr=null,n._det=null,n},clone:function(n){var t=this.val.map(function(n){return n.slice()});return!0===n?t:new E(this.ring,t)},map:function(r,n){var i=this,t=i.val.map(function(n,e){return n.map(function(n,t){return r(n,[e,t],i)})});return!0===n?t:new E(i.ring,t)},array:function(n){var t=this;return $n(t.nr*t.nc,n?function(n){return t.val[n%t.nr][~~(n/t.nr)]}:function(n){return t.val[~~(n/t.nc)][n%t.nc]})},row:function(n){return 0<=n&&n=e.nr?r.val[t].slice():t>=r.nr?e.val[t].slice():$n(z.max(r.nc,e.nc),function(n){return n>=e.nc?r.val[t][n]:n>=r.nc?e.val[t][n]:r.val[t][n].add(e.val[t][n])})})):((Rn(e)||Nn(e))&&(e=r.ring.cast(e)),r.map(function(n){return n.add(e)}))},sub:function(e){var r=this;return Dn(e,E)?E(r.ring,$n(z.max(r.nr,e.nr),function(t){return t>=e.nr?r.val[t].slice():t>=r.nr?e.val[t].map(function(n){return Arithmetic.neg(n)}):$n(z.max(r.nc,e.nc),function(n){return n>=e.nc?r.val[t][n]:n>=r.nc?Arithmetic.neg(e.val[t][n]):r.val[t][n].sub(e.val[t][n])})})):((Rn(e)||Nn(e))&&(e=r.ring.cast(e)),r.map(function(n){return n.sub(e)}))},mul:function(i){var u,l,s=this;return Dn(i,E)?(u=z.min(s.nc,i.nr),l=s.ring.Zero(),E(s.ring,$n(s.nr,function(r){return $n(i.nc,function(n){for(var t=l,e=0;e=r.nr?e.val[t].slice():t>=e.nr?r.val[t].slice():$n(z.max(r.nc,e.nc),function(n){return n>=r.nc?e.val[t][n]:n>=e.nc?r.val[t][n]:r.val[t][n].mul(e.val[t][n])})})):((Rn(e)||Nn(e))&&(e=r.ring.cast(e)),r.map(function(n){return n.mul(e)}))},prod:function(i){var n,t,u,e,l,s=this;return Dn(i,E)?(e=s.nr,n=s.nc,t=i.nr,u=i.nc,e=e*t,l=n*u,E(s.ring,$n(e,function(n){var e=~~(n/t),r=n%t;return $n(l,function(n){var t=~~(n/u),n=n%u;return s.val[e][t].mul(i.val[r][n])})}))):((Rn(i)||Nn(i))&&(i=s.ring.cast(i)),s.map(function(n){return n.mul(i)}))},div:function(t){return Dn(t,f)||X.Arithmetic.isNumber(t)||Nn(t)?((Rn(t)||Nn(t))&&(t=this.ring.cast(t)),this.map(function(n){return n.div(t)})):this},mod:function(t){return Dn(t,f)||X.Arithmetic.isNumber(t)||Nn(t)?((Rn(t)||Nn(t))&&(t=this.ring.cast(t)),this.map(function(n){return n.mod(t)})):this},divmod:function(n){return[this.div(n),this.mod(n)]},pow:function(n){var t,e,r=X.Arithmetic;if((n=M.cast(n)).lt(r.O)||n.gt(mn))return null;if(0===(n=r.val(n.num)))return E.I(this.ring,this.nc);if(1===n)return this;for(t=null,e=this;0!==n;)1&n&&(t=null==t?e:e.mul(t)),n>>=1,e=e.mul(e);return t},fwdsub:function(n,t){var e,r,i,u,l,s,o,m=this.ring,c=m.Zero(),f=this.val;for(Dn(n,E)&&(n=n.col(0)),Dn(t,E)&&(t=t.diag()),n=m.cast(n),t=t&&m.cast(t),u=z.min(this.nr,this.nc,n.length),l=new Array(u),e=0;eA&&(m.length=A),this._ref=[y,m,c,t]}return n?this._ref.slice():this._ref[0]},rref:function(n,t){var e,r,i,u,l,s,o,m,c,f,a,h,d,g,_,v;if(null==this._rref){for(r=(e=this.ring).Zero(),i=e.One(),u=e.MinusOne(),l=this.nr,v=s=this.nc,wn(t)&&(v=z.min(v,t[1])),g=(v=this.ref(!0,t))[0].concat(v[3]),o=v[1],t=v[2],m=o.length,f=0;f=r.nc?t=e.nc?t=r.nr?n=e.nr?n"===n?(n=-1,i=!0):"<="===n||"=<"===n?i=!(n=1):">="!==n&&"=>"!==n||(i=!(n=-1))),u(-1===(n=-1===(n=+n)?-1:1)?function(n){for(var t=n[0],e=1,r=n.length;e=n[e]||!i&&t>n[e])return!1;t=n[e]}return!0})},LEN:function(t,n){return t=+t,u(">="===(n=n||"==")?function(n){return n.length>=t}:">"===n?function(n){return n.length>t}:"<"===n?function(n){return n.length="===(n=n||"==")||"=>"===n?function(n){return 0<=t&&t=e}:">"===n?function(n){return 0<=t&&te}:"<"===n?function(n){return 0<=t&&t="===(t=t||"==")||"=>"===t?function(e){return kn(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)>=n}:">"===t?function(e){return kn(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)>n}:"<"===t?function(e){return kn(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)<=n}:"!="===t?function(e){return kn(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)!==n}:function(e){return kn(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)===n})},MIN:function(n,t){return n=+n,u(">="===(t=t||"==")||"=>"===t?function(e){return kn(function(n,t){return e[t]=n}:">"===t?function(e){return kn(function(n,t){return e[t]n}:"<"===t?function(e){return kn(function(n,t){return e[t]i)return!1;return!0}:function(n){for(var t=0,e=n.length;t=i)return!1;return!0})},DIFF:function(t){return u(Dn(t,P)?function(n){return!t.has(n)}:function(n){return!0})},MOD:function(t,n){var e=null!=n&&Dn(t,P)?t.index(n):X.Arithmetic.O;return u(Dn(t,P)?function(n){return X.Arithmetic.equ(e,t.index(n))}:function(n){return!0})}},filter:null,dispose:function(){return this.filter=null,this},apply:function(n,t){var e=this.filter;return!e||!Mn(e)||Boolean(e.call(t||null,n))},NOT:function(){var t=this;return u(function(n){return!t.apply(n,this)})},OR:function(t){var e=this;return Mn(t)||Dn(t,u)?(Dn(t,u)||(t=u(t)),u(function(n){return e.apply(n,this)||t.apply(n,this)})):e},XOR:function(e){var r=this;return Mn(e)||Dn(e,u)?(Dn(e,u)||(e=u(e)),u(function(n){var t=r.apply(n,this),n=e.apply(n,this);return t&&!n||!t&&n})):r},AND:function(t){var e=this;return Mn(t)||Dn(t,u)?(Dn(t,u)||(t=u(t)),u(function(n){return e.apply(n,this)&&t.apply(n,this)})):e}}),T=X.Iterator=n({constructor:function n(t,e){var r=this,i=X.Arithmetic;if(!Dn(r,n))return new n(t,e);(wn(t)||Sn(t))&&(Dn(t[0],n)||Dn(t[t.length-1],n))?(r.name="Sequence",r.$=e||{},r.$.seq=V.call(t),r.$.count=kn(function(n,t){return i.add(n,t.total())},i.O,r.$.seq),r.rewind()):wn(t)||Sn(t)?(r.name="List",r.$=e||{},r.$.seq=V.call(t),r.$.count=r.$.seq.length,r.rewind()):Mn(t)?(r.name="Generator",r.$={},r.$.generator=t,r.$.state=e||{},r.$.count=i.I,r.rewind()):(r.name=t||"Iterator",r.$=e||{},r.$.count=r.$.count||i.O)},__static__:{Iterable:function n(t,e){if(!Dn(this,n))return new n(t,e);e=-1===e?-1:1,this.next=function(){var n=t.hasNext(e)?t.next(e):null;return null==n?{done:!0}:{value:n}}}},name:"Iterator",$:null,__index:null,__item:null,_index:null,_item:null,__subindex:null,_subindex:null,__subitem:null,_subitem:null,dispose:function(){var n=this;return n.$.seq&&n.$.seq.length&&(kn(function(n,t){t instanceof T&&t.dispose()},null,n.$.seq),n.$.seq=null),n.$=null,n.__index=null,n.__item=null,n._index=null,n._item=null,n.__subindex=null,n._subindex=null,n.__subitem=null,n._subitem=null,n},filterBy:function(n){var t=this.$;return!1===n?t.filter&&(t.filter=null):(Dn(n,u)||Mn(n))&&(t.filter=Dn(n,u)?n:u(n)),this},mapTo:function(n,t){var e,r,i,u=this.$;return!1===n?u.output&&(u.output=null):Mn(n)&&(e=u.output,t&&Mn(e)?u.output=(r=e,i=n,function(n,t){return null==n?null:i(r(n,t),t)}):u.output=n),this._item=this.output(this.__item),this},fuse:function(n,t,e){var r=this.$;return 1===arguments.length&&!1===n?r.sub&&(r.sub=null,r.submethod=null,r.subcascade=null,r.subcount=null,this.rewind()):Dn(t,T)&&Mn(n)&&(r.sub=t,r.submethod=n,r.subcascade=-1===e?-1:1,r.subcount=X.Arithmetic.mul(r.count,t.total()),this.rewind()),this},unfuse:function(){return this.fuse(!1)},juxtaposeWith:function(n,t){return this.fuse(function(n,t){return[].concat(n).concat(t)},n,t)},state:function(n){return arguments.length?(this.$.state=n,this):this.$.state},output:function(n){var t=this.$.output;return null==n?null:Mn(t)?t(n):n},fusion:function(n,t){var e,r=this.$;return r.sub?(-1===r.subcascade&&(e=n,n=t,t=e),null==n||null==t?n||t||null:r.submethod.call(this,n,t)):n},order:function(){return this},rewind:function(n,t){var e,r,i,u=this,l=u.$;if(n=-1===n?-1:1,wn(l.seq)){for(e=0,r=l.seq.length;e=u.seq.length)&&u.sub&&u.sub.hasNext(n)&&(i.rewind(n,!0),r=i.__item,i.__subitem=u.sub.next(n)),i.__item=r,i._item=i.output(i.__item),i._subitem=u.sub&&null!=i._item&&null!=i.__subitem?i.fusion(i._item,i.__subitem):null}while(u.filter&&null!=e&&!u.filter.apply(e,i));return e}if(Mn(u.generator)){for(;t=i.__item,e=u.sub?i._subitem:i._item,i.__item=u.generator.call(i,t,n,u.state,!1),null==i.__item&&u.sub&&u.sub.hasNext(n)&&(i.rewind(n,!0),i.__subitem=u.sub.next(n)),i._item=i.output(i.__item),i._subitem=u.sub&&null!=i._item&&null!=i.__subitem?i.fusion(i._item,i.__subitem):null,u.filter&&null!=e&&!u.filter.apply(e,i););return e}return null},get:function(n){var t,e,r=[];if(Mn(n))for(;this.hasNext()&&null!=(t=this.next())&&n(t);)r.push(t);else for(e=!arguments.length||null==n,null!=n&&(n=+n);(e||r.length=o.$.mindimension&&u<=o.$.maxdimension){if(l=o[B].rank(n,o.n,o.$),c.gt(l,a)){m=!0;break}s=c.add(s,o.total())}return m?c.add(l,s):a}return In()},unrank:function(n,t,e){if(e&&"sequence"===e.type){var r,i,u=X.Arithmetic,l=u.O,s=e.seq;if(!s||!s.length)return null;if(null==(n=null==n?null:u.num(n))||!u.inside(n,u.J,null!=e.count?e.count:this.count(t,e)))return null;for(i=s.length,r=0;u.gte(n,s[r].total())&&(n=u.sub(n,s[r].total()),!(i<=++r||u.lt(n,l))););return rc&&(c=e[n]+1),e[n]):c+r[n-e.length]}:function(n){return nu&&(e.length=u),d<0&&1n[1]&&(n[1]=t),n},[1/0,0],l),s.base=l,s.minbase=n[0],s.maxbase=n[1],s.dimension=l.length,"gray"===s.output?s.output=function(n,t){return e.toGray(n,t)}:"inversion"===s.output?s.output=function(n,t){return e.inversion(n)}:wn(s.output)&&(i=s.output,s.output=function(n,t){return e.component(n,i)})),P.call(this,"Tensor",l,s,u?{method:"partial"===s.type?s.submethod||"complete":s.submethod,iter:u,pos:"partial"===s.type?s.subpos||s.position:s.subpos,cascade:s.subcascade}:null)},__static__:{C:P.C,P:P.P,T:P.T,DUAL:P.DUAL,count:function(n,t){var e=X.Arithmetic.O,r=t&&t.type?t.type:"tensor";return"partial"===r?t.data&&t.data.length?X.Arithmetic.num(t.data.length):e:"tuple"===r?!n||n[0]<=0?e:ne(n[1],n[0]):n&&n.length?lt(n):e},initial:function(t,n,e){var r,i=n&&n.type?n.type:"tensor",u=n&&n.order?n.order:bn;return e=-1===e?-1:1,(!(pn&u)&&_n&u||pn&u&&!(_n&u))&&(e=-e),r="partial"===i?n.data&&n.data.length?e<0?n.data[n.data.length-1]:n.data[0]:null:(r="tuple"===i?t[0]?$n(t[0],e<0?t[1]-1:0,0):[]:t.length?e<0?$n(t.length,function(n){return t[n]-1}):$n(t.length,0,0):[],this.DUAL(r,t,n))},valid:function(n,t,e){var r,i,u=e&&e.type?e.type:"tensor";if(!n)return!1;if("partial"===u)return 0<=Je(e.data,n,!0);if(n=this.DUAL(n.slice(),t,e),"tuple"===u){if(!(r=t[0])||r!==n.length)return!1;for(t=t[1],i=0;i=t)return!1}else{if(!(r=t.length)||r!==n.length)return!1;for(i=0;i=t[i])return!1}return!0},succ:function(n,t,e,r,i,u){if(!e||null==n)return null;var l=r&&r.type?r.type:"tensor",s=r&&null!=r.order?r.order:bn,o=X.Arithmetic;return i=-1===i?-1:1,"partial"===l?r.data&&r.data.length?(_n&s&&(i=-i,null!=t&&(t=o.sub(o.num(r.data.length-1),t))),null==t&&(t=Je(r.data,n,!0)),t=o.val(t),i<0?0<=t-1?r.data[t-1]:null:0<=t&&t+1=t)return a;f=o(c(f,t),n[i])}}else{if(!(r=t.length)||r!==n.length)return a;for(i=0;i=t[i])return a;f=o(c(f,t[i]),n[i])}}return(!(pn&l)&&_n&l||pn&l&&!(_n&l))&&(f=m(e&&null!=e.last?e.last:m(this.count(t,e),u.I),f)),f},unrank:function(n,t,e){var r,i,u,l,s,o,m=X.Arithmetic,c=e&&null!=e.order?e.order:bn,f=e&&e.type?e.type:"tensor",a=m.sub,h=m.mod,d=m.div,g=m.val;if(null==(n=null==n?null:m.num(n))||!m.inside(n,m.J,e&&null!=e.count?e.count:this.count(t,e)))return null;if((!(pn&c)&&_n&c||pn&c&&!(_n&c))&&(n=a(e&&null!=e.last?e.last:a(this.count(t,e),m.I),n)),"partial"===f){if(!e.data||!e.data.length)return null;s=0<=(n=g(n))&&n=t+e[i].length&&(t+=e[i++].length),t+e[i][n-t]})},component:function(t,e){return null==t?null:null==e?t:$n(t.length,function(n){return n=r.length||null==r[n])return e[n];var t=r[n];return Rn(t)?e[n]+t:t[0]*e[n]+(t[1]||0)})}:On},conditional:be,generate:function(n,t,i,u,l){l=l||{},i=i||$n(t.length||0,0,1);for(var e,r,s,o,m,c,f,a,h,d=null==l.min?0:l.min,g=null==l.max?n-1:l.max,_=g-d+1,v=t,b=v.length,p=!1,x=[],y=[],q={},A=function(n){return d<=n&&n<=g},p=!(t=[]),I=m=0;Ie[1]?qe(n,$n(e[0]-e[1]+1,e[1],1).filter(A)).reverse():qe(n,$n(e[1]-e[0]+1,e[0],1).filter(A)):qe(n,e[1].split(",").map(Number).filter(A))).length){p=!0;break}t.push(s)}else if(e=r.match(rn)){if(!(s=(0e[1]?$n(e[0]-e[1]+1,e[0],-1):$n(e[1]-e[0]+1,e[0],1):e[1].split(",").map(Number)).filter(A)).length){p=!0;break}t.push(s)}else if(f=!0,c=[],a=null,r=r.replace(en,function(n,t){var e=parseInt(t,10),t="v"+String(e);return!isNaN(e)&&A(e)||(f=!1),f&&-1===c.indexOf(e)&&c.push(e),t}),f){c.sort(function(e){return!0===e?function(n,t){return n.equ(t)?0:n.lt(t)?-1:1}:e?function(n,t){return e.equ(n,t)?0:e.lt(n,t)?-1:1}:function(n,t){return n===t?0:n"===u?fn:"<"===u?an:"<="===u||"=<"===u?gn:">"===u?hn:(">="===u||"=>"===u)&&dn,h=Mn(l.extra_conditions)?function(n,t,e){var r=n[t];return!(rr||hn===u&&i[i.length-1]-i[t]>r)&&l.extra_conditions(n,t,e)}:function(n,t,e){n=n[t];return!(nn||hn===u&&i[i.length-1]-i[t]>n)},!0===l.lazy?t:be(t,u,h))}}}),J=X.Permutation=n(P,{constructor:function n(t,e){var r=null;if(!Dn(this,n))return new n(t,e);(e=e||{}).type=String(e.type||"permutation").toLowerCase(),Dn(t=t||0,P)?t=(r=t).dimension():r=e.sub,e.base=t,e.dimension=z.max(0,t),e.rand=e.rand||{},"multiset"===e.type&&(e.multiplicity=wn(e.multiplicity)&&e.multiplicity.length?e.multiplicity.slice():$n(e.dimension,1,0),e.multiplicity=e.multiplicity.concat($n(e.dimension-kn(it,0,e.multiplicity),1,0)),e.base=e.multiplicity.length,e.multiset=Ce(e.multiplicity,e.dimension)),P.call(this,"Permutation",t,e,r?{method:e.submethod,iter:r,pos:e.subpos,cascade:e.subcascade}:null)},__static__:{C:P.C,P:P.P,T:P.T,DUAL:P.DUAL,count:function(n,t){var e=X.Arithmetic,r=e.O,i=t&&t.type?t.type:"permutation",u=t&&null!=t["cycles="]?0|t["cycles="]:null,l=t&&null!=t["fixed="]?0|t["fixed="]:null;return n<0?r:"cyclic"===i?e.num(n):"multiset"===i?ee(n,t.multiplicity):"derangement"===i?null!=l?e.mul(ee(n,l),ee(n-l,!1)):ee(n,!1):"involution"===i?ee(n,!0):"connected"===i?ee(n-1):null!=u?ue(n,u,1):ee(n)},initial:function(t,n,e){var r,i,u,l=n&&n.type?n.type:"permutation",s=n&&null!=-n.order?n.order:bn,o=n&&null!=n["cycles="]?0|n["cycles="]:null,m=n&&null!=n["fixed="]?0|n["fixed="]:null;if(t<0)return null;if(0===t)return[];if(u=e=-1===e?-1:1,(!(pn&s)&&_n&s||pn&s&&!(_n&s))&&(e=-e),"cyclic"===l)r=e<0?[t-1].concat($n(t-1,0,1)):$n(t,0,1);else if("derangement"===l){if(null!=m)return m<0||t=s.length||s[u]<=0)return!1;s[u]--}if(0!==s.filter(function(n){return 0!==n}).length)return!1}else{for(l={},r=0;r=_*t[o+g];)o-=g;if(0<=o&&o<=x){for(m=d;0<=m&&m<=x&&0=_*t[m];)m-=g;for(a=t[o],t[o]=t[m],t[m]=a,c=o+g,f=d;0<=c&&c<=x&&0<=f&&f<=x&&0=i.length)return h;if(r+1===t)return a.I;for(c=i[u][0],f=i[u][1],l.rem(e),l.rem(r),s=l.last();s&&s.index>r;s=s.prev){for(m=!1,l.rem(s),o=s.prev;o&&0<=o.index&&(l.rem(o),o.index===c&&s.index===f?(h=a.add(a.add(h,n(t,o.index,s.index,i,u+1,l)),a.I),m=!0):h=a.add(h,a.add(Ze(t,o.index,s.index,l),s.index+1=h.length||h[l]<=0)return w;h[l]--}if(0!==h.filter(function(n){return 0!==n}).length)return w;for(h=e.multiplicity.slice(),a=e&&null!=e.count?e.count:ee(t,h),u=t-1,r=0;rr;l=l.prev){for(c=!1,u.rem(l),s=l.prev;s&&0<=s.index;s=s.prev)if(u.rem(s),m=o,o=f.add(o,f.add(Ze(t,s.index,l.index,u),l.index+1s),u),!v.lte(l,t)));f=f.prev);if(null==f)break;t=O(t,l),r[s]=f.index,u.rem(f.index),f.index>s+1&&o.offset(f.index-1,1).offset(s,-1),s++}u.dispose(),o.dispose()}else if("multiset"===b)for(_=n.multiplicity.slice(),r=$n(e),g=n&&null!=n.count?n.count:ee(e,_),s=0;s=u&&(i=0,r+=u);if(!0===e)for(r=0;r=l&&(i=0,r++);else for(i=r=0;r=l&&(i=0,r++);return n}(null,n,t)},parity:In,isPermutation:function(n,t){if((t=t||n.length)!==n.length)return!1;for(var e,r=$n(t,0,0),i=0;i=r)return!1}else if("repeated"===l||"combination+repeated"===l){for(r=t[0],i=0;i=r||i+1n[i+1])return!1}else if("ordered"===l||"variation"===l)for(r=t[0],u={},i=0;i=r||1===u[n[i]])return!1;u[n[i]]=1}else for(r=t[0],i=0;i=r||i+1=n[i+1])return!1;return!0},succ:function(n,t,e,r,i,u){return!e||!e[0]||e[0]<=0||e[1]<=0||null==n?null:function(n,t,e,r,i,u){var l,s,o,m,c,f,a,h,d,g,_,v,b=t[1],p=t[0];if(t[0]<0||t[1]<0)return null;t=f=b-1,d=a=c=1,g=h=0,pn&i&&(a=-a,h=p-1-h,c=-c,t=f-t,d=-d,g=f-g);vn&i&&(c=-c,t=f-t,d=-d,g=f-g);_n&i&&(e=-e);if(e<0)if("ordered+repeated"===r||"variation+repeated"===r||"repeated+variation"===r){for(l=t;0<=l&&l<=f&&0===n[l];)l-=c;if(0<=l&&l<=f)for(--p,n[l]=n[l]-1,s=l+c;0<=s&&s<=f;s+=c)n[s]=p;else n=null}else if("ordered"===r||"variation"===r){for(null==u&&(u=Ke(n,0,b,0,r)),l=t,o=-1;-1===o&&0<=l&&l<=f;){if(0<=a*n[l]+h-a)for(s=a*n[l]+h-a;0<=s&&sb||v&&0n[l-c]+_){o=l;break}if(!(0<=o&&o<=f)&&0=l)return g;_=c(a(_,l),n[r])}else if("repeated"===m||"combination+repeated"===m){for(l=t[0]+v-1,s=e&&e.count?e.count:ee(l,v),r=1;r<=v;r++){if(n[r-1]<0||n[r-1]>=t[0]||rn[r])return g;(u=v+1-r)<=(i=l-1-n[r-1]-r+1)&&(_=c(_,ee(i,u)))}_=f(f(s,d),_)}else if("ordered"===m||"variation"===m){for(l=t[0],o={},r=0;r=l||1===o[n[r]])return g;o[n[r]]=1}for(n=Re(null,n,l),r=0;r=l||r=n[r])return g;(u=v+1-r)<=(i=l-1-n[r-1])&&(_=c(_,ee(i,u)))}_=f(f(s,d),_)}return(!(pn&b)&&_n&b||pn&b&&!(_n&b))&&(_=f(e&&null!=e.last?e.last:f(this.count(t,e),d),_)),_},unrank:function(n,t,e){var r,i,u,l,s,o,m,c=X.Arithmetic,f=c.O,a=c.I,h=c.sub,d=c.div,g=c.mod,_=c.mul,v=c.lte,b=c.gt,p=c.val,x=t[1],y=e&&e.type?e.type:"combination",q=e&&null!=e.order?e.order:bn;if(null==(n=null==n?null:c.num(n))||!c.inside(n,c.J,e&&null!=e.count?e.count:this.count(t,e)))return null;if(t[0]<0||t[1]<0)return null;if(0===x)return[];if((!(pn&q)&&_n&q||pn&q&&!(_n&q))&&(n=h(e&&null!=e.last?e.last:h(this.count(t,e),c.I),n)),t=t[0],r=$n(x),"ordered+repeated"===y||"variation+repeated"===y||"repeated+variation"===y)for(l=n,o=x-1;0<=o;o--)s=g(l,t),l=d(l,t),r[o]=p(s);else if("ordered"===y||"variation"===y){for(l=n,o=x-1;0<=o;o--)s=g(l,u=t-o),l=d(l,u),r[o]=p(s);Me(r,r,u)}else for(u=(m="repeated"===y||"combination+repeated"===y)?t+x-1:t,n=h(h(i=e&&e.count?e.count:ee(u,x),a),n),i=d(_(i,u-x),u),s=u-x+1,l=x,o=u-1;v(i,n)?(r[x-l]=m?u-s-x+1:u-s-l+1,b(i,f)&&(n=h(n,i),i=d(_(i,l),o)),l--):(i=d(_(i,o-l),o),s--),o--,0=n[r+1])return!1;l[i]=1}return!0},succ:function(n,t,e,r,i,u){if(null==n)return null;var l,s,o=X.Arithmetic,m=r&&r.type?r.type:"subset",c=r&&null!=r.order?r.order:bn;if(e<=0)return null;if(xn&c){if(null!=t&&(s=null!=r.count?r.count:this.count(e,r),t=o.add(t,i<0?o.J:o.I),o.inside(t,o.J,s))){for(_n&c&&(t=o.sub(o.sub(s,o.I),t)),t=Gn(t),l=0,(n=new Array(e+1))[e]=0;ln[s-u]+1?(--n[s],n[s+u]=m,n[o]++):n[o]--:n[o]=0:n=null:0===n[o]?(n[i]=0,n[o]=1):+n[l]+0n.length||e.maxdimension=n[u+1])return f;_=a(_,Kt(t,r)),s[r]=1}_=Xn(_),_n&g&&(_=h(e&&null!=e.last?e.last:h(this.count(t,e),c),_))}else if(pn&g){for(l=n.length,s={},_=m,u=0;u=n[u+1])return f;_=a(_,Kt(t,r)),s[r]=1}_n&g&&(_=h(e&&null!=e.last?e.last:h(this.count(t,e),c),_))}else if(o){for(l=n.length,s={},_=m,u=0;u=n[u+1])return f;_=a(_,Ht(t,r,i)),s[r]=1,i=r}_n&g&&(_=h(e&&null!=e.last?e.last:h(this.count(t,e),c),_))}return _},unrank:function(n,t,e){var r,i,u,l,s,o=X.Arithmetic,m=o.O,c=o.I,f=o.band,a=o.shr,h=o.gt,d=(o.add,o.sub),g=o.gte,_=e&&e.type?e.type:"subset",v=e&&null!=e.order?e.order:bn,b=e&&null!=e.count?e.count:this.count(t,e),p=m;if(n=null==n?null:o.num(n),!e||t<0||null==n||!o.inside(n,o.J,b))return null;if(((r=new Array(t+1))[t]=0)n.length||on[m]+1?(n[o]=n[m],n[m]=i):(i===n[o]&&n[x][1]--,u===n[m]&&n[x][2]--,n[o]--,n[m]++,i===n[m]&&n[x][1]++,u===n[o]&&n[x][2]++)}}else if(u)if(pn&s)n=null;else if((a=n[t])n[m]+1?(n[o]=n[m],n[m]=i):(i===n[o]&&n[x][1]--,n[o]--,n[m]++,i===n[m]&&n[x][1]++)}else if(pn&s)if((a=n[c])n[x][0]){for(o=t,_=0;v<=o&&o<=b&&1===n[o];)o-=y,_++;if(a=n[o]-1,n[o]=a,0<++_)if(v<=o+y&&o+y<=b)n[o+=y]=_,_=0,n[x][0]=y<0?l-o:o+1;else for(;0<_--;)n[o+=y]=1,n[x][0]++}else n=null}else if(r)if(pn&s)n=null;else if(i&&u){if(i===u)return null;for(f=1,o=(m=t)-y,d=i-n[m],_=n[m];v<=o&&o<=b&&(in[o]+1&&an[o]+1?(n[m]=n[o],n[o]=i):(i===n[m]&&n[x][1]--,u===n[o]&&n[x][2]--,n[o]++,n[m]--,u===n[m]&&n[x][2]++,i===n[o]&&n[x][1]++)}else if(u)if(p-u*(r-1)>n[c]){for(o=t;v<=o&&o<=b&&u===n[o];)o-=y;m=o-y,1===n[x][2]&&u===n[m]?(n[m]=n[o],n[o]=u):(u===n[m]&&n[x][2]--,n[o]--,n[m]++,u===n[o]&&n[x][2]++,a=n[o],n[o]=n[t],n[t]=a)}else n=null;else if(i){for(f=1,o=(m=t)-y,d=i-n[m],_=n[m];v<=o&&o<=b&&(i&&in[o]+1&&_-(f-1)-1n[o]+1?(n[m]=n[o],n[o]=i):(i===n[m]&&n[x][1]--,n[o]++,n[m]--,i===n[o]&&n[x][1]++)}else if(pn&s)if(p-r+1>n[t]){for(o=c;v<=o&&o<=b&&1===n[o];)o+=y;a=n[o],n[o]=1,n[c]=a-1,v<=o+y&&o+y<=b&&n[o+y]++}else n=null;else if(p-r+1>n[c]){for(o=t;v<=o&&o<=b&&1===n[o];)o-=y;a=n[o],n[o]=1,n[t]=a-1,v<=o-y&&o-y<=b&&n[o-y]++}else n=null;else if(pn&s)n=null;else if(i){if(i===u)return null;for(h=u||1,_=n[o=t],i===n[o]&&n[x][1]--,u&&u===n[o]&&n[x][2]--,n[x][0]--,o-=y;null!=u&&v<=o&&o<=b&&_<1+u;)_+=n[o],n[x][0]--,i===n[o]&&n[x][1]--,u===n[o]&&n[x][2]--,o-=y;if(on[c]){for(_=n[o=t],n[x][0]--,u&&u===n[o]&&n[x][2]--,o-=y,u&&u===n[o]&&n[x][2]--,n[o]++,_--;h<=_;)n[o+=y]=h,_-=h,n[x][0]++,u&&n[x][2]++;if(u&&0===n[x][2]&&(_+=n[o]-u,n[o]=u,n[x][2]++),0<_){if(u&&1===n[x][2]&&u===n[o])if(u<_){for(_+=n[o],n[x][0]--,n[x][2]--,n[o-=y]++,_--;h<=_;)n[o+=y]=h,_-=h,n[x][0]++,n[x][2]++;0<_&&(u===n[o]&&n[x][2]--,n[o]+=_)}else n[o-y]+=_;else u&&u===n[o]&&n[x][2]--,n[o]+=_;_=0}0<_&&(n=null)}else n=null;return n}:function(n,t,e,r,i,u,l,s){var o,m,c,f,a,h,d,g,_,v,b,p,x=t,y=l,q=1;if(x<=0||null!=r&&r<=0||null!=u&&u<=0||null!=i&&i<=0)return null;vn&s&&(q=-q);_n&s&&(e=-e);t=q<0?(b=l-(n[y][0]||1),c=p=l-1,b):(b=0,p=n[y][0]-1,c=b,p);if(pn&s)return null;if(e<0)if(r){if(i&&u&&i===u)return null;for(h=u||1,v=x-(i||0)-(u||0),a=0h){for(o=t,_=g=v=0;b<=o&&o<=p&&0<=q*(o-m)&&h===n[o];)v+=n[o],i===n[o]&&g++,u===n[o]&&_++,o-=q;if(i===n[o]&&n[y][1]--,a=n[o]-1,v++,n[o]=a,n[y][0]=(q<0?l-o:o+1)+(u?1:0),n[y][1]-=g,n[y][2]-=_,u===n[o]&&n[y][2]++,af,m=c+q}else m=u?(h=u,a=2f+1||n[c+(f-1)*q]n[o]?1:0:z.min(i?i-n[o]:v,v),u===n[o]){if(1===n[y][2]){for(o=m;b<=o&&o<=p&&b<=o-q&&o-q<=p&&n[o-q]===n[o];)o-=q;if(b<=o-q&&o-q<=p){n[o]++,v--,o+=q;continue}a=z.min(i?i-n[o]:v,v),n[o]+=a,v-=a;break}n[y][2]--}n[o]+=a,v-=a,i===n[o]&&n[y][1]++,o+=q}0n.length||e.maxdimensionn.length||a=s[u+1])return!1;c[o]=1}m+=r}return m===t},succ:function(n,t,e,r,i){return null==e||null==n||e<=0?null:(i=-1===i?-1:1,function(n,t,e,r,i){var u,l,s,o,m,c,f;if(t<=0||null!=e&&(e<=0||tn[0]&&(e-t+un[0]){for(n[u]--,m[u]=m[u-1],l=u+1;l>>1,c=new Array(i),f=0;f>>1,p=new Array(t),x=0;x>>1==(e+1&3)>>>1?v-r:r+1;else{for(i=n(b),m=(o=(s=l=b*b)<<1)+l,e=x=r=0;r>>1,e=0;e=i&&(a=0,i<=++c&&(o+=i,a=c=0,r<=++f&&(m++,s+=i,a=c=o=f=0),m