eligendiexercitationem
Version:
Yet another class for arbitrary-precision integers in pure JavaScript. Small. Well tested.
107 lines • 165 kB
JavaScript
/**
* @overview Honestly Arbitrary Precision Integer library for ECMAScript.
* @name hapint-1_9_2-min.es
* @author Masashi Nakanishi
* @version 1.9.2
* @license
* Copyright 2011, Masashi Nakanishi
* Dual licensed under the MIT or GPL Version 2 licenses.
*/
(function(Mb,Nb,Ga){if(!(-255==63*Math.pow(2,28)+268435201<<0&&Math.pow(2,53)+1==Math.pow(2,53)&&Math.pow(2,53)-1!=Math.pow(2,53)))throw Error("This script engine is not supported");var Da=isFinite,Eb=parseInt,G=Math.floor,Gc=Math.ceil,Jd=Math.round,Vd=Math.abs,Ca=Math.pow,Hc=Math.log,Ic=Math.sin,Jc=Math.cos,Ma=Math.min,rb=Math.max,od=Math.random,Kc=Math.LN2,Kd=Math.PI,sb=Number,Ob=String,F=Array,Pb=Date,Ga=(""+Ga).toLowerCase(),Ga=/webkit/.test(Ga)?"w":/opera/.test(Ga)?"o":/msie/.test(Ga)?/msie 6/.test(Ga)?
"m6":"m":/gecko\//.test(Ga)?"g":"u",Qb=Ga in{w:1}?function(q){q-=q>>1&1431655765;q=(q&858993459)+(q>>2&858993459);q=q+(q>>4)&252645135;q+=q>>8;return q+(q>>16)&63}:function(q){q-=q>>1&1431655765;q=(q&858993459)+(q>>2&858993459);return 16843009*(q+(q>>4)&252645135)>>24},pd=function(q){return(Hc(q)/Kc|0)+1},Qa=Ga in{g:1}?pd:function(q){var t=1,s;if(s=q>>>16)q=s,t+=16;if(s=q>>8)q=s,t+=8;if(s=q>>4)q=s,t+=4;if(s=q>>2)q=s,t+=2;q>>1&&(t+=1);return t},Za=Ga in{m6:1}?function(q){if(0==q)return-1;q=(q&-q)-
1;q-=q>>1&1431655765;q=(q&858993459)+(q>>2&858993459);return 16843009*(q+(q>>4)&252645135)>>24}:Ga in{g:1}?function(q){if(0==q)return-1;q=~q&q-1;q-=q>>1&1431655765;q=(q&858993459)+(q>>2&858993459);return 16843009*(q+(q>>4)&252645135)>>24}:function(q){if(0==q)return-1;var t=0;q&65535||(q>>=16,t+=16);q&255||(q>>=8,t+=8);q&15||(q>>=4,t+=4);q&3||(q>>=2,t+=2);q&1||++t;return t},Ld=function(q){q|=q>>1;q|=q>>2;q|=q>>4;q|=q>>8;return(q|q>>16)+1},qd=function(q){if(!q||"function"!=typeof q.nextBytes)return!1;
var t=F(1);q.nextBytes(t);t=t[0];return"number"==typeof t&&G(t)==t&&0<=t&&255>=t},dc=function(q){var t;if(!(t=qd(q)))"function"!=typeof q?t=!1:(q=q(),t="number"==typeof q&&0<=q&&1>q);return t},Wd=function(q,t){t.nextBytes(q)},Md=function(q,t){for(var s,w=q.length;4<=w;)s=4294967296*t()|0,q[--w]=s&255,q[--w]=(s>>=8)&255,q[--w]=(s>>=8)&255,q[--w]=s>>8&255;0<w&&(s=16777216*t()|0,q[--w]=s&255,0<w&&(q[--w]=(s>>=8)&255,0<w&&(q[0]=s>>8&255)))},Fb=function(q,t){var s=(q+7)/8>>>0,w=F(s);0<s&&(qd(t)?t.nextBytes(w):
Md(w,t),w[0]&=(1<<8-(8*s-q))-1);return w},rd=function(q,t,s){var w=(q+7)/8>>>0,n=F(w);0<w&&(s(n,t),n[0]&=(1<<8-(8*w-q))-1);return n},Lc=function(){};Lc.prototype.suspend=function(){return!0};Lc.prototype.resume=function(){};var Mc=function(q){return q instanceof Lc},Ab=function(q){this.r=this.s=(new Pb).getTime();this.i="number"==typeof q?q:0;this.p=null};Ab.prototype=new Lc;Ab.prototype.suspend=function(){var q=(new Pb).getTime();if(q-this.r<this.i)return!1;this.p=q;return!0};Ab.prototype.resume=
function(){this.r=(new Pb).getTime()};var Nd=function(q){if(q instanceof F){for(var t=q.length,s=F(t),w=0;w<t;++w)s[w]=arguments.callee(q[w]);return"["+s.toString()+"]"}return q.toString()},mb=function(q,t,s){if(!(s instanceof F)||0==s.length||"string"!=typeof s[0])throw Error("illegal argument");if(t){var w=Nd(s);if(t[w])return t[w]}var n=q[s[0]];if("function"!=typeof n)throw Error("unsupported algorithm name");for(var s=s.slice(1),p=0,m=s.length;p<m;++p)s[p]instanceof F&&"string"==typeof s[p][0]&&
(s[p]=arguments.callee(q,t,s[p]));return t?t[w]=n.apply(null,s):n.apply(null,s)},Ga=function(q){var t=function(n){this._=n};t.maxBitLength=function(){return 31};if(q)var s=F(32768),w=function(n){return n&4294934528?new t(n):s[n]||(s[n]=new t(n))};else w=function(n){return new t(n)};t.valueOf=function(n){return w(n<<0)};t.prototype.add=function(n){return w(this._+n._<<0)};t.prototype.subtract=function(n){return w(this._-n._<<0)};t.prototype.multiply=function(n){return w(this._*n._<<0)};t.prototype.divide=
function(n){return w(this._/n._<<0)};t.prototype.divideAndRemainder=function(n){return[w(this._/n._<<0),w(this._%n._<<0)]};t.prototype.negate=function(){return w(-this._<<0)};t.prototype.and=function(n){return w(this._&n._)};t.prototype.or=function(n){return w(this._|n._)};t.prototype.xor=function(n){return w(this._^n._)};t.prototype.not=function(){return w(~this._)};t.prototype.andNot=function(n){return w(this._&~n._)};t.prototype.shiftLeft=function(n){return w(this._<<n)};t.prototype.shiftRight=
function(n){return w(this._>>n)};t.prototype.clearBit=function(n){return w(this._&~(1<<n))};t.prototype.flipBit=function(n){return w(this._^1<<n)};t.prototype.setBit=function(n){return w(this._|1<<n)};t.prototype.signum=function(){return 0==this._?0:0>this._?-1:1};t.prototype.equals=function(n){return this._==n._};t.prototype.compareTo=function(n){return this._==n._?0:this._<n._?-1:1};t.prototype.bitLength=function(){var n=0>this._?~this._:this._;return 0==n?0:Qa(n)};t.prototype.getLowestSetBit=function(){return Za(this._)};
t.prototype.bitCount=function(){return Qb(0>this._?~this._:this._)};t.prototype.testBit=function(n){return 0!=(this._&1<<n)};t.prototype.intValue=function(){return this._};t.prototype.doubleValue=function(){return this._};t.prototype.clone=function(){var n=new t;n._=this._;return n};t.freeCache=function(){if(q)s.length=0,s.length=32768};t.isUsingCache=function(){return q};t.factory=arguments.callee;return t}(!1),Od=function(q){var t=function(n){this._=n};t.maxBitLength=function(){return 53};if(q)var s=
F(65536),w=function(n){return n&4294901760?new t(n):s[n]||(s[n]=new t(n))};else w=function(n){return new t(n)};t.valueOf=function(n){return w(n)};t.prototype.add=function(n){return w(this._+n._)};t.prototype.subtract=function(n){return w(this._-n._)};t.prototype.multiply=function(n){return w(this._*n._)};t.prototype.divide=function(n){return w(G(this._/n._))};t.prototype.divideAndRemainder=function(n){return[w(G(this._/n._)),w(this._%n._)]};t.prototype.negate=function(){return w(-this._)};t.prototype.and=
function(n){var p=this._,n=n._;return 0>p?2147483648>n?w(p&n):-2147483648<=p?w(2147483648*(n/2147483648<<0)+(p&n&2147483647)):w(2147483648*(p/2147483648&n/2147483648)+(p&n&2147483647)):2147483648>p||2147483648>n?w(p&n):w(2147483648*(p/2147483648&n/2147483648)+(p&n&2147483647))};t.prototype.or=function(n){var p=this._,n=n._;if(0>p){if(-2147483648>p)return 2147483648<=n?w(2147483648*(p/2147483648|n/2147483648)+(p|n|2147483648)):w(2147483648*(p/2147483648<<0)+(p|n|2147483648));if(2147483648<=n)return w(p|
n|2147483648)}else{if(2147483648<=p)return 2147483648<=n?w(2147483648*(p/2147483648|n/2147483648)+((p|n)&2147483647)):w(2147483648*(p/2147483648<<0)+((p|n)&2147483647));if(2147483648<=n)return w(2147483648*(n/2147483648<<0)+((p|n)&2147483647))}return w(p|n)};t.prototype.xor=function(n){var p=this._,n=n._;if(0>p){if(-2147483648>p)return 2147483648<=n?w(2147483648*(p/2147483648^n/2147483648)+(p^n|2147483648)):w(2147483648*(p/2147483648<<0)+(p^n|2147483648));if(2147483648<=n)return w(2147483648*~(n/
2147483648)+(p^n|2147483648))}else{if(2147483648<=p)return 2147483648<=n?w(2147483648*(p/2147483648^n/2147483648)+((p^n)&2147483647)):w(2147483648*(p/2147483648<<0)+((p^n)&2147483647));if(2147483648<=n)return w(2147483648*(n/2147483648<<0)+((p^n)&2147483647))}return w(p^n)};t.prototype.not=function(){return w(-(this._+1))};t.prototype.andNot=function(n){var p=this._,n=-(n._+1);return 0>p?-2147483648>p?-2147483648>n?w(2147483648*(p/2147483648&n/2147483648)+(p&n|2147483648)):w(2147483648*(p/2147483648<<
0)+(p&n|2147483648)):-2147483648>n?w(2147483648*(n/2147483648<<0)+(p&n|2147483648)):w(p&n):2147483648>p?w(p&n):-2147483648<=n?w(2147483648*(p/2147483648<<0)+(p&n&2147483647)):w(2147483648*(p/2147483648&n/2147483648)+(p&n&2147483647))};t.prototype.shiftLeft=function(n){return w(this._*Ca(2,n)%9007199254740992)};t.prototype.shiftRight=function(n){return w(G(this._/Ca(2,n)))};t.prototype.clearBit=function(n){var p=this._;return 0>p?31>n?-2147483648<=p?w(p&~(1<<n)):w(2147483648*(p/2147483648<<0)+(p&~(1<<
n)|2147483648)):-2147483648<=p?w(2147483648*~(1<<n-31)+p):w(2147483648*(p/2147483648&~(1<<n-31))+(p|2147483648)):31>n?2147483648>p?w(p&~(1<<n)):w(2147483648*(p/2147483648<<0)+(p&2147483647&~(1<<n))):2147483648>p?w(p):w(2147483648*(p/2147483648&~(1<<n-31))+(p&2147483647))};t.prototype.flipBit=function(n){var p=this._;return 0>p?31>n?-2147483648<=p?w(p^1<<n):w(2147483648*(p/2147483648<<0)+(p^1<<n|2147483648)):-2147483648<=p?w(2147483648*~(1<<n-31)+p):w(2147483648*(p/2147483648^1<<n-31)+(p|2147483648)):
31>n?2147483648>p?w(p^1<<n):w(2147483648*(p/2147483648<<0)+(p&2147483647^1<<n)):2147483648>p?w(2147483648*(1<<n-31)+p):w(2147483648*(p/2147483648^1<<n-31)+(p&2147483647))};t.prototype.setBit=function(n){var p=this._;return 0>p?31>n?-2147483648<=p?w(p|1<<n):w(2147483648*(p/2147483648<<0)+(p|2147483648|1<<n)):-2147483648<=p?w(p):w(2147483648*(p/2147483648|1<<n-31)+(p|2147483648)):31>n?2147483648>p?w(p|1<<n):w(2147483648*(p/2147483648<<0)+(p&2147483647|1<<n)):2147483648>p?w(2147483648*(1<<n-31)+p):w(2147483648*
(p/2147483648|1<<n-31)+(p&2147483647))};t.prototype.signum=function(){return 0==this._?0:0>this._?-1:1};t.prototype.equals=function(n){return this._==n._};t.prototype.compareTo=function(n){return this._==n._?0:this._<n._?-1:1};t.prototype.bitLength=function(){var n=this._;return 0>n?-2147483648<=n?-1==n?0:Qa(~n):Qa(~(n/2147483648))+31:2147483648>n?0==n?0:Qa(n):Qa(n/2147483648<<0)+31};t.prototype.getLowestSetBit=function(){var n=this._;if(0==n)return-1;var p=Za(n<<0);return 0>p?Za(n/2147483648<<0)+
31:p};t.prototype.bitCount=function(){var n=this._;return 0>n?-2147483648<=n?Qb(~n):Qb(~(n/2147483648))+Qa(~n&2147483647):2147483648>n?Qb(n):Qa(n/2147483648<<0)+Qa(n&2147483647)};t.prototype.testBit=function(n){return 31>n?0!=(this._&1<<n):0!=(this._/2147483648&1<<n-31)};t.prototype.intValue=function(){return this._<<0};t.prototype.doubleValue=function(){return this._};t.prototype.clone=function(){var n=new t;n._=this._;return n};t.freeCache=function(){if(q)s.length=0,s.length=65536};t.isUsingCache=
function(){return q};t.factory=arguments.callee;return t}(!1);Mb[Nb]=function(){var q=arguments[0]||{},t="function"==typeof q.unit?q.unit:this&&"function"==typeof this.Unit?this.Unit:Od,s=function(j){var v=null;if("function"==typeof t.maxBitLength){v=t.maxBitLength();if("number"!=typeof v||!Da(v)||G(v)!=v||2>v)throw Error("bigint.maxBitLength() must return a finite integer greater than 1");v=G(v/2)}if(null==j)j=null==v?8:v;else{if(!Da(j)||1>j)j=8;null!=v&&j>v&&(j=v)}2147483647<j&&(j=2147483647);return j}(null!=
q.unitBitLength?G(q.unitBitLength):this&&"function"==typeof this.unitBitLength?G(this.unitBitLength()):null),w=s-1,n=Ca(2,s),p=t.valueOf(0),m=t.valueOf(1),Q=p.setBit(s),K=Q.subtract(m),ra=t.valueOf(s),ga=function(j){return 0<=j.compareTo(Q)},Ha=function(){return{u:m,x:null}},H=function(j){if(9007199254740992<=j){var v=Hc(j/4503599627370496)/Kc|0;return sa(arguments.callee(G(j/Ca(2,v))),v)}for(var x=v={};j>=n;)x=x.x={u:t.valueOf(j%n)},j=G(j/n);x.x={u:t.valueOf(j),x:null};return v.x},y=H(1),Ga=H(2);
H(s);var N=H(536870912),ec=function(j){if(!j||!(j.u instanceof t))return!1;var v,x;for(v=j,x=j;(x=x.x)&&(x=x.x);)if((v=v.x)==x)return!1;for(v=j;v=v.x;)if(!v||!(v.u instanceof t))return!1;return!0},Mb=function(j){for(;j;j=j.x){if(!(0<=j.u.signum())||ga(j.u))return!1;if(!j.x&&0==j.u.signum())return!1}return!0},Gb=function(j){return!j||"number"!=typeof j.sign||1!=Vd(j.sign)?!1:!j.mag||ec(j.mag)},Nb="function"==typeof t.prototype.getLowestBits?function(j,v){return j.getLowestBits(v)}:function(j,v){return j.and(p.setBit(v).subtract(m))},
ma="function"==typeof t.prototype.getLowestBits?function(j){return j.getLowestBits(s)}:function(j){return j.and(K)},Xd=function(j){var v=j.signum();if(0==v)return{sign:1,mag:null};0>v&&(j=j.negate());for(var x={},a=x;j.signum();j=j.shiftRight(s))a=a.x={u:ma(j)};a.x=null;return{sign:v,mag:x.x}},na=function(j){for(var v={u:j.u},x=v;j=j.x;)x=x.x={u:j.u};x.x=null;return v},Z=31>=s?function(j,v){var x={},a=x,d=x,c=v.u.intValue(),v=v.x;0==c&&(v=z(v,y),c=n);do{if((a=a.x={u:j.u}).u.signum())d=a;if(0==--c){if(!v)break;
v=z(v,y);c=n}}while(j=j.x);d.x=null;return x.x}:function(j,v){var x={},a=x,d=x,c=v.u,v=v.x;0==c.signum()&&(v=z(v,y),c=Q);do{if((a=a.x={u:j.u}).u.signum())d=a;if(0==(c=c.subtract(m)).signum()){if(!v)break;v=z(v,y);c=Q}}while(j=j.x);d.x=null;return x.x},oa=function(j,v){if(!v)return j;var x={},a=x;if(v.u.signum()){do a=a.x={u:j.u};while(j!=v&&(j=j.x));a.x=null}else{var d=x;do if((a=a.x={u:j.u}).u.signum())d=a;while(j!=v&&(j=j.x));d.x=null}return x.x},A=function(j){for(var v={o:j,x:null};j=j.x;)v={o:j,
x:v};return v},rc=function(j){for(;j.x;j=j.x);return j},R=function(j){return j&&!j.x&&j.u.equals(m)},Ra=function(j){return j&&j.u.testBit(0)},ba=function(j){return{sign:0>(j||1/j)?-1:1,mag:null}},ca=function(j){return{sign:0>(j||1/j)?-1:1,mag:{u:m,x:null}}},J=function(j){var v=0>(j||1/j)?-1:1;0>v&&(j=-j);return 0==(j=G(j))?{sign:v,mag:null}:{sign:v,mag:H(j)}},sc=ba(1),Sa=ca(1),hb=J(2),O=J(4),Rb=J(6),Wa=J(152125131763605),W=J(1024),Bb=J(2147483647),Ta=J(9007199254740985),T=function(j){return!(j=j.mag)||
!j.u.testBit(0)},da=function(j){return(j=j.mag)&&j.u.testBit(0)},C=function(j){return j.mag?j.sign:0},tb=function(j){return 0<j.sign?j:{sign:1,mag:j.mag}},Ja=function(j){return{sign:-j.sign,mag:j.mag}},X=function(j,v){for(var x,a;;)if(j.x){if(!v.x)return 1;x={o:j,x:x};a={o:v,x:a};j=j.x;v=v.x}else{if(v.x)return-1;break}var d;if(d=j.u.compareTo(v.u))return d;if(!x)return 0;for(;;a=a.x){if(d=x.o.u.compareTo(a.o.u))return d;if(!(x=x.x))return 0}},tc=function(j,v){for(var a=j,u=v;;)if(a.x){if(!u.x)return!1;
a=a.x;u=u.x}else{if(u.x)return!1;break}for(;;v=v.x){if(!j.u.equals(v.u))return!1;if(!(j=j.x))return!0}},pa=function(j,v){var a=C(j),u=C(v);return a!=u?0!=a?a:-u:0==a?0:X(j.mag,v.mag)*a},ta=function(j,v){var a=C(j);return a==C(v)&&(0==a||tc(j.mag,v.mag))},fc=function(j,v){var a={},u=a,d=a;do if(v.u.signum()){if((u=u.x={u:j.u.andNot(v.u.subtract(m))}).u.signum())d=u;j=j.x;v=v.x;break}else u=u.x={u:p},j=j.x,v=v.x;while(j&&v);for(;j&&v;j=j.x,v=v.x)if((u=u.x={u:j.u.andNot(v.u)}).u.signum())d=u;j?u.x=j:
d.x=null;return a.x},uc=function(j,v){if(!j.mag||!v.mag)return ba(1);var a;if(0>j.sign)if(0>v.sign){a=j.mag;for(var u=v.mag,d={},c=d,e=!0,g=!0,f=!0;e&&g&&f&&a&&u;a=a.x,u=u.x,c=c.x)e=0==a.u.signum(),g=0==u.u.signum(),e||g||ga((c.x={u:a.u.subtract(m).or(u.u.subtract(m)).add(m)}).u)?c.x={u:p}:f=!1;for(;e&&g&&a&&u;a=a.x,u=u.x)e=0==a.u.signum(),g=0==u.u.signum(),c=e||g?c.x={u:K}:c.x={u:a.u.subtract(m).or(u.u.subtract(m))};for(;e&&f&&a&&u;a=a.x,u=u.x,c=c.x)(e=0==a.u.signum())||ga((c.x={u:a.u.subtract(m).or(u.u).add(m)}).u)?
c.x={u:p}:f=!1;for(;g&&f&&a&&u;a=a.x,u=u.x,c=c.x)(g=0==u.u.signum())||ga((c.x={u:u.u.subtract(m).or(a.u).add(m)}).u)?c.x={u:p}:f=!1;for(;e&&a&&u;a=a.x,u=u.x)a.u.signum()?(c=c.x={u:a.u.subtract(m).or(u.u)},e=!1):c=c.x={u:u.u};for(;g&&a&&u;a=a.x,u=u.x)u.u.signum()?(c=c.x={u:u.u.subtract(m).or(a.u)},g=!1):c=c.x={u:a.u};for(;f&&a&&u;a=a.x,u=u.x,c=c.x)ga((c.x={u:a.u.or(u.u).add(m)}).u)?c.x={u:p}:f=!1;for(;a&&u;a=a.x,u=u.x)c=c.x={u:a.u.or(u.u)};u&&(a=u,e=g);if(!e||!f){for(;e&&a;a=a.x)a.u.signum()?(e=!1,
c=c.x={u:a.u.subtract(m)}):c=c.x={u:K};for(;f&&a;a=a.x,c=c.x)ga((c.x={u:a.u.add(m)}).u)?c.x={u:p}:f=!1}c.x=a;a={sign:-1,mag:d.x}}else a={sign:1,mag:fc(v.mag,j.mag)};else if(0>v.sign)a={sign:1,mag:fc(j.mag,v.mag)};else{a=j.mag;u=v.mag;c=d={};do c=c.x={u:a.u.and(u.u)},c.u.signum();while((a=a.x)&&(u=u.x));c.x=null;a={sign:1,mag:d.x}}return a},gc=function(j,v){for(var a={},u=a,d=!0,c=!0,e=a;d&&c&&j&&v;j=j.x,v=v.x)v.u.signum()?(d=!1,u.x={u:v.u.subtract(m).andNot(j.u).add(m)}):u.x={u:ma(j.u.not()).add(m)},
ga(u.x.u)?u=u.x={u:p}:(c=!1,e=u=u.x);for(;d&&j&&v;j=j.x,v=v.x)v.u.signum()?(d=!1,u=u.x={u:v.u.subtract(m).andNot(j.u)}):u=u.x={u:ma(j.u.not())},u.u.signum()&&(e=u);for(;c&&j&&v;j=j.x,v=v.x)ga((u.x={u:v.u.andNot(j.u).add(m)}).u)?u=u.x={u:p}:(c=!1,e=u=u.x);for(;j&&v;j=j.x,v=v.x)if((u=u.x={u:v.u.andNot(j.u)}).u.signum())e=u;if(v){if(d&&c)return u.x=v,a.x;for(;d&&v;v=v.x)v.u.signum()?(d=!1,u=u.x={u:v.u.subtract(m)},!v.x&&u.u.signum()&&(e=u)):e=u=u.x={u:K};for(;c&&v;v=v.x)ga((u.x={u:v.u.add(m)}).u)?u.x=
{u:p}:(c=!1,e=u.x);if(v)return u.x=v,a.x}e.x=null;return a.x},wb=function(j,a){if(!a.mag)return!j.mag?ba(1):j;if(!j.mag)return a;var x;if(0>j.sign)if(0>a.sign){x=j.mag;for(var u=a.mag,d={},c=d,e=!0,g=!0,f=!0,h=d;e&&g&&f&&x&&u;x=x.x,u=u.x)e=0==x.u.signum(),g=0==u.u.signum(),e&&g||!e&&!g&&ga((c.x={u:x.u.subtract(m).and(u.u.subtract(m)).add(m)}).u)?c=c.x={u:p}:(f=!1,e?(c=c.x={u:u.u},c.u.signum()&&(h=c)):g?(c=c.x={u:x.u},c.u.signum()&&(h=c)):h=c=c.x);for(;e&&g&&x&&u;x=x.x,u=u.x)x.u.signum()?(e=!1,u.u.signum()?
(g=!1,c=c.x={u:x.u.subtract(m).and(u.u.subtract(m))}):c=c.x={u:x.u.subtract(m)},c.u.signum()&&(h=c)):u.u.signum()?(g=!1,c=c.x={u:u.u.subtract(m)},c.u.signum()&&(h=c)):h=c=c.x={u:K};for(;e&&f&&x&&u;x=x.x,u=u.x)ga((c.x={u:(x.u.signum()?(e=!1,x.u.subtract(m).and(u.u)):u.u).add(m)}).u)?c=c.x={u:p}:(f=!1,h=c=c.x);for(;g&&f&&x&&u;x=x.x,u=u.x)ga((c.x={u:(u.u.signum()?(g=!1,u.u.subtract(m).and(x.u)):x.u).add(m)}).u)?c=c.x={u:p}:(f=!1,h=c=c.x);for(;e&&x&&u;x=x.x,u=u.x)if((c=c.x={u:x.u.signum()?(e=!1,x.u.subtract(m).and(u.u)):
u.u}).u.signum())h=c;for(;g&&x&&u;x=x.x,u=u.x)if((c=c.x={u:u.u.signum()?(g=!1,u.u.subtract(m).and(x.u)):x.u}).u.signum())h=c;for(;f&&x&&u;x=x.x,u=u.x)ga((c.x={u:x.u.and(u.u).add(m)}).u)?c=c.x={u:p}:(f=!1,h=c=c.x);for(;x&&u;x=x.x,u=u.x)if((c=c.x={u:x.u.and(u.u)}).u.signum())h=c;h.x=null;x={sign:-1,mag:d.x}}else x={sign:-1,mag:gc(a.mag,j.mag)};else if(0>a.sign)x={sign:-1,mag:gc(j.mag,a.mag)};else{x=j.mag;u=a.mag;for(c=d={};x&&u;x=x.x,u=u.x)c=c.x={u:x.u.or(u.u)};u&&(x=u);c.x=x;x={sign:1,mag:d.x}}return x},
Sb=function(j,a){for(var x={},u=x,c=!0,d=!0,e=x;c&&d&&j&&a;j=j.x,a=a.x)a.u.signum()?(c=!1,u.x={u:j.u.xor(a.u.subtract(m)).add(m)}):u.x={u:ma(j.u.not()).add(m)},ga(u.x.u)?u=u.x={u:p}:(d=!1,e=u=u.x);for(;c&&j&&a;j=j.x,a=a.x)a.u.signum()?(c=!1,u=u.x={u:j.u.xor(a.u.subtract(m))}):u=u.x={u:ma(j.u.not())},u.u.signum()&&(e=u);for(;d&&j&&a;j=j.x,a=a.x)u.x={u:j.u.xor(a.u).add(m)},ga(u.x.u)?u=u.x={u:p}:(d=!1,e=u=u.x);for(;j&&a;j=j.x,a=a.x)u=u.x={u:j.u.xor(a.u)},u.u.signum()&&(e=u);if(a){if(c&&d)return u.x=
a,x.x;for(;c&&a;a=a.x)a.u.signum()?(c=!1,u=u.x={u:a.u.subtract(m)},u.u.signum()&&(e=u)):e=u=u.x={u:K};for(;d&&a;a=a.x)u.x={u:a.u.add(m)},ga(u.x.u)?u=u.x={u:p}:(d=!1,e=u=u.x);if(a)return u.x=a,x.x}else if(j){for(;d&&j;j=j.x)u.x={u:j.u.add(m)},ga(u.x.u)?u=u.x={u:p}:(d=!1,e=u=u.x);if(j)return u.x=j,x.x}e.x=null;return x.x},Zd=function(j,a){for(var x={},u=x,c=!0,d=!0;c&&d&&j&&a;j=j.x,a=a.x)j.u.signum()?(c=!1,u.x={u:j.u.subtract(m).or(a.u).add(m)},ga(u.x.u)?u=u.x={u:p}:(d=!1,u=u.x)):u=u.x={u:p};for(;c&&
j&&a;j=j.x,a=a.x)j.u.signum()?(c=!1,u=u.x={u:j.u.subtract(m).or(a.u)}):u=u.x={u:K};for(;d&&j&&a;j=j.x,a=a.x,u=u.x)u.x={u:j.u.or(a.u).add(m)},ga(u.x.u)?u.x={u:p}:d=!1;for(;j&&a;j=j.x,a=a.x)u=u.x={u:j.u.or(a.u)};if(a){for(;d&&a;a=a.x,u=u.x)ga((u.x={u:a.u.add(m)}).u)?u.x={u:p}:d=!1;if(a)return u.x=a,x.x}else if(j){if(c&&d)return u.x=j,x.x;for(;c&&j;j=j.x)j.u.signum()?(c=!1,u=u.x={u:j.u.subtract(m)}):u=u.x={u:K};for(;d&&j;j=j.x,u=u.x)ga((u.x={u:j.u.add(m)}).u)?u.x={u:p}:d=!1;if(j)return u.x=j,x.x}else if(d)u=
u.x={u:m};u.x=null;return x.x},Fa=function(j,a){do j={u:p,x:j};while(a=z(a,y));return j},Ia=function(j,a){do if(!(j=j.x))return null;while(a=z(a,y));return j},Hb=function(j,a){if(0==a)return j;if(0>a)return Cb(j,-a);for(;0<a;--a)j={u:p,x:j};return j},Cb=function(j,a){if(0==a)return j;if(0>a)return Hb(j,-a);for(;0<a;--a)if(!(j=j.x))return null;return j},bb=function(j){return{u:p,x:j}},hc=function(j){return j.x},Fa=function(j,a){for(var x;0<X(a,N);a=z(a,N))for(x=536870912;0<x;--x)j={u:p,x:j};return a?
Hb(j,f(a)):j},Ia=function(j,a){for(var x;0<X(a,N);a=z(a,N))for(x=536870912;0<x;--x)if(!(j=j.x))return null;return a?Cb(j,f(a)):j},sa=function(j,a){if(0==a)return j;var x=G(a/s);if(a%=s){for(var u={},c=u,d=p,e;j;j=j.x)e=j.u.shiftLeft(a).or(d),ga(e)?(d=e.shiftRight(s),e=ma(e)):d=p,c=c.x={u:e};if(d.signum())c=c.x={u:d};c.x=null;j=u.x}return x?Hb(j,x):j},Tb=function(j,a){if(0==a)return j;var x=G(a/s);if(x&&!(j=Cb(j,x)))return null;if(0==(a%=s))return j;var u=x={},c=j.u.shiftRight(a);if(j.x){var d=s-a,
e,j=j.x;do{if((e=Nb(j.u,a)).signum())c=e.shiftLeft(d).or(c);u=u.x={u:c};c=j.u.shiftRight(a)}while(j=j.x)}if(c.signum())u=u.x={u:c};u.x=null;return x.x},Ka=1==s?bb:function(j){for(var a={},x=a,c=!1,d;j;j=j.x)d=c?j.u.shiftLeft(1).setBit(0):j.u.shiftLeft(1),x=x.x={u:(c=d.testBit(s))?d.clearBit(s):d};if(c)x=x.x={u:m};x.x=null;return a.x},Na=1==s?hc:function(j){for(var a={},x=a,c=j.u.shiftRight(1);j=j.x;)j.u.testBit(0)&&(c=c.setBit(w)),x=x.x={u:c},c=j.u.shiftRight(1);x.x=c.signum()?{u:c,x:null}:null;return a.x},
ic=function(j,a){var x=L(a,ra),j=sa(j,x[1].intValue());x[0]&&(j=Fa(j,x[0]));return j},Ub=function(j,a){var x=L(a,ra);return x[0]&&!(j=Ia(j,x[0]))?null:Tb(j,x[1].intValue())},ua=function(j,a){return 0==a?j:0>a?Nc(j,-a):0==C(j)?j:{sign:j.sign,mag:sa(j.mag,a)}},Nc=function(j,a){if(0==a)return j;if(0>a)return ua(j,-a);var x=C(j);if(0==x)return j;return 0>x?R(j.mag)?ca(-1):(x=Tb(z(j.mag,y),a))?{sign:-1,mag:E(x,y)}:ca(-1):{sign:1,mag:Tb(j.mag,a)}},jc=function(j){return 0==C(j)?j:{sign:j.sign,mag:Ka(j.mag)}},
wa=function(j){var a=C(j);if(0==a)return j;return 0>a?R(j.mag)?ca(-1):(j=Na(z(j.mag,y)))?{sign:-1,mag:E(j,y)}:ca(-1):{sign:j.sign,mag:Na(j.mag)}},cb=function(j,a){var x=C(a);return 0>x?Ua(j,Ja(a)):0==x?j:{sign:j.sign,mag:ic(j.mag,a.mag)}},Ua=function(j,a){var x=C(a);if(0>x)return cb(j,Ja(a));if(0==x)return j;x=C(j);if(0==x)return j;return 0>x?R(j.mag)?ca(-1):(x=Ub(z(j.mag,y),a.mag))?{sign:-1,mag:E(x,y)}:ca(-1):{sign:j.sign,mag:Ub(j.mag,a.mag)}},Vb=function(j){for(var a,x=0;4194304>x&&0>(a=j.u.getLowestSetBit());++x)j=
j.x;if(4194304>x){var c=s*x+a;return c?H(c):null}for(;536870912>x&&0>(a=j.u.getLowestSetBit());++x)j=j.x;if(536870912>x)c=H(x);else for(c=N;0>(a=j.u.getLowestSetBit());){j=j.x;for(x=1;536870912>x&&0>(a=j.u.getLowestSetBit());++x)j=j.x;if(536870912>x){c=E(c,H(x));break}c=E(c,N)}c=D(c,ra);a&&(c=E(c,H(a)));return c},La=function(j){var a=2<=arguments.length&&arguments[1];if(0==C(j))return a?ca(-1):-1;for(var x=j.mag,c,d=0;4194304>d&&0>(c=x.u.getLowestSetBit());++d)x=x.x;if(4194304>d){var e=s*d+c;return a?
{sign:1,mag:e?H(e):null}:e|0}for(;536870912>d&&0>(c=x.u.getLowestSetBit());++d)x=x.x;if(536870912>d)e=H(d);else for(e=N;0>(c=x.u.getLowestSetBit());){x=x.x;for(d=1;536870912>d&&0>(c=x.u.getLowestSetBit());++d)x=x.x;if(536870912>d){e=E(e,H(d));break}e=E(e,N)}e=D(e,ra);c&&(e=E(e,H(c)));return a?{sign:1,mag:e}:f(e)},Ib=function(j,a){for(var x=j,c=a,d,e,g=0;4194304>g;++g){d=x.u.getLowestSetBit();e=c.u.getLowestSetBit();if(0<=d||0<=e)break;x=x.x;c=c.x}if(4194304>g){var f=s*g+(0>d?e:0>e?d:d>e?e:d);return f?
H(f):null}for(;536870912>g;++g){d=x.u.getLowestSetBit();e=c.u.getLowestSetBit();if(0<=d||0<=e)break;x=x.x;c=c.x}if(536870912>g)f=H(g);else for(f=N;;){d=x.u.getLowestSetBit();e=c.u.getLowestSetBit();if(0<=d||0<=e)break;x=x.x;c=c.x;for(g=1;536870912>g;++g){d=x.u.getLowestSetBit();e=c.u.getLowestSetBit();if(0<=d||0<=e)break;x=x.x;c=c.x}if(536870912>g){f=E(f,H(g));break}f=E(f,N)}f=D(f,ra);if(d=0>d?e:0>e?d:d>e?e:d)f=E(f,H(d));return f},db=function(j){for(var a=1;536870912>a&&(j=j.x);++a);if(536870912>
a)return H(a);for(var c=N;j=j.x;){for(a=1;536870912>a&&(j=j.x);++a);if(536870912>a){c=E(c,H(a));break}c=E(c,N)}return c},kc=function(j){for(var a=0;4194304>a&&j.x;++a)j=j.x;if(4194304>a)return H(s*a+j.u.bitLength());for(;536870912>a&&j.x;++a)j=j.x;if(536870912>a)var c=H(a);else for(c=N;j.x;){j=j.x;for(a=1;536870912>a&&j.x;++a)j=j.x;if(536870912>a){c=E(c,H(a));break}c=E(c,N)}return E(D(c,ra),H(j.u.bitLength()))},Jb=function(j,a){for(var c=0;j.x;j=j.x)if((c+=s)>=a)return c+1;return c+j.u.bitLength()},
ha=function(j){var a=C(j),c=null;0<a?c=kc(j.mag):0>a&&(a=z(j.mag,y),null!=a&&(c=kc(a)));return 2<=arguments.length&&arguments[1]?{sign:1,mag:c}:c?f(c):0},Wb=function(j){var a=2<=arguments.length&&arguments[1];if(0==C(j))return a?ba(1):0;for(var c=j.mag,d=c.u.bitCount(),e=1;4194304>e&&(c=c.x);++e)d+=c.u.bitCount();if(!c)return a?{sign:1,mag:H(d)}:d|0;var g=d?H(d):null;do{for(e=d=0;4194304>e&&(c=c.x);++e)d+=c.u.bitCount();d&&(g=g?E(g,H(d)):H(d))}while(c);return a?{sign:1,mag:g}:g?f(g):0},xb=function(j){var a=
j.mag;return!a.u.testBit(0)?j:{sign:1,mag:{u:a.u.clearBit(0),x:a.x}}},V=function(j){var a=j.mag;a.u=a.u.clearBit(0);return j},qb=function(j){var a=j.mag;a?a.u=a.u.setBit(0):j.mag={u:m,x:null};return j},nb=function(j,a){var c=j.mag;if(!c)return j.mag=ic(y,a.mag),j;for(var a=L(a.mag,ra),d=a[0];d;d=z(d,y))c=c.x||(c.x={u:p});a=a[1].doubleValue();if(c.u.testBit(a))return j;c.u=c.u.setBit(a);if(!c.x)c.x=null;return j},I=function(j,a){var c=j.mag;if(!c)return j.mag=sa(y,a),j;for(var d=G(a/s);0<d;--d)c=c.x||
(c.x={u:p});a%=s;if(c.u.testBit(a))return j;c.u=c.u.setBit(a);if(!c.x)c.x=null;return j},ia=function(j,a){var c=C(j);if(0==c)return!1;if("number"==typeof a){if(9007199254740992>=a){if(0>c)a:{for(var c=a,d=j.mag,e=!0,g=G(c/s);0<g;--g){if(!d.x){c=!0;break a}e&&d.u.signum()&&(e=!1);d=d.x}c=(e?d.u.not().add(m):d.u.not()).testBit(c%s)}else a:{c=a;d=j.mag;for(e=G(c/s);0<e;--e)if(!(d=d.x)){c=!1;break a}c=d.u.testBit(c%s)}return c}a={sign:1,mag:H(a)}}if(0>c)a:{d=j.mag;e=!0;if(c=a.mag){c=L(c,ra);for(g=c[0];g;g=
z(g,y)){if(!d.x){c=!0;break a}e&&d.u.signum()&&(e=!1);d=d.x}c=c[1].doubleValue()}else c=0;c=(e?d.u.not().add(m):d.u.not()).testBit(c)}else a:{d=j.mag;if(c=a.mag){c=L(c,ra);for(e=c[0];e;e=z(e,y))if(!(d=d.x)){c=!1;break a}c=c[1].doubleValue()}else c=0;c=d.u.testBit(c)}return c},Oa=function(j,a){if(!(j=j.mag))return!1;for(var c=a/s|0;0<c;--c)if(!(j=j.x))return!1;return j.u.testBit(a%s)},xa=function(j){return j.mag&&j.mag.u.testBit(0)},Kb=function(j,a){return 0==j.signum()?a:j.shiftLeft(s).add(a)},vc=
function(j,a){if(0==a.length)return j;if(0==j.length)return a;var c;j.length<a.length&&(a=j=a);for(var d=j.slice(),e=!1,g=0,f=a.length;g<f;)c=(e?j[g].add(m):j[g]).add(a[g]),d[g++]=(e=ga(c))?ma(c):c;if(e){for(f=j.length;g<f;)if(c=e?j[g].add(m):j[g],e=ga(c))d[g++]=ma(c);else{d[g++]=c;break}e&&(d[g]=m)}return d},va=function(j,a){if(0==a.length)return j;if(0==j.length)return j.push.apply(j,a),j;for(var c=Ma(j.length,a.length),d,e=!1,g=0;g<c;)d=(e?j[g].add(m):j[g]).add(a[g]),j[g++]=(e=ga(d))?ma(d):d;if(c<
a.length)d=a.slice(c),j.push.apply(j,e?arguments.callee(d,[m]):d);else if(e){for(c=j.length;e&&g<c;)d=j[g].add(m),j[g++]=(e=ga(d))?ma(d):d;e&&(j[g]=m)}return j},wc=function(j,a,c){if(0==j.length)return a;var d=c-a.length;if(0==d)return a.concat(j);if(0<d){c=F(d);for(d-=1;0<=d;--d)c[d]=p;return a.concat(c,j)}return a.slice(0,c).concat(vc(j,a.slice(c)))},Xa=function(j,a){var c=a.length;if(0==c)return j;for(var d=j.slice(),e,g=!1,f=0;f<c;++f)e=g?a[f].add(m):a[f],d[f]=(g=0>d[f].compareTo(e))?d[f].add(Q).subtract(e):
d[f].subtract(e);c=d.length;if(g)for(;f<c;++f)if(d[f].signum()){d[f]=d[f++].subtract(m);break}else d[f]=K;if(f==c&&0==d[--f].signum()){for(;0<=--f&&!d[f].signum(););d.splice(f+1)}return d},lc=function(j,a){var c=j.length;if(0==c||a.equals(m))return j;for(var d,e=p,g=F(c),f=0;f<c;)d=j[f].multiply(a).add(e),e=d.shiftRight(s),g[f++]=e.signum()?ma(d):d;e.signum()&&(g[f]=e);return g},Zc=function(j,a,c){for(c=Ma(c,j.length)-1;c>=a&&!j[c].signum();--c);return j.slice(a,c+1)},$c=function(j,a){for(var c=Ma(a,
j.length)-1;0<=c&&!j[c].signum();--c);return j.slice(0,c+1)},E=function(j,a){for(var c={},d=c,e,g=!1;j&&a;j=j.x,a=a.x)e=(g?j.u.add(m):j.u).add(a.u),d=d.x={u:(g=ga(e))?ma(e):e};for(a&&(j=a);j;j=j.x)if(g)e=j.u.add(m),d=d.x={u:(g=ga(e))?ma(e):e};else return d.x=j,c.x;if(g)d=d.x={u:m};d.x=null;return c.x},xc=function(j,a,c,d){if(!j)return a;for(var e=a||(a={u:p}),c=c.x;c!=d;c=c.x)a=a.x||(a.x={u:p});a.x=a.x?E(j,a.x):j;return e},Oc=function(j,a,c){if(!j)return a;if(a){var d=db(a),e=X(d,c);if(0==e)e=rc(a),
e.x=j;else if(0>cmp){c=z(c,d);for(e=rc(a);c;c=z(c,y))e=e.x={u:p};e.x=j}else{for(e=a;c=z(c,y);)e=e.x;e.x=E(j,e.x)}}else{for(var e={u:p},a=e;c=z(c,y);)e=e.x={u:p};e.x=j}return a},z=function(j,a){for(var c={},d=c,e,g=!1,f=c;a;j=j.x,a=a.x)e=g?a.u.add(m):a.u,d=(g=0>j.u.compareTo(e))?d.x={u:j.u.add(Q).subtract(e)}:d.x={u:j.u.subtract(e)},d.u.signum()&&(f=d);for(;j;j=j.x)if(g)j.u.signum()?(d=d.x={u:j.u.subtract(m)},d.u.signum()&&(f=d),g=!1):f=d=d.x={u:K};else return d.x=j,c.x;f.x=null;return c.x},D=function(j,
a){if(a.equals(m))return j;for(var c=j.u.multiply(a),d={u:ma(c)},e=d,c=c.shiftRight(s);j=j.x;)c=j.u.multiply(a).add(c),e=e.x={u:ma(c)},c=c.shiftRight(s);if(c.signum())e=e.x={u:c};e.x=null;return d},L=function(j,a){if(a.equals(m))return[j,p];for(var c=A(j),d=c.o.u.divideAndRemainder(a),e=d[0].signum()?{u:d[0],x:null}:null,d=d[1];c=c.x;)d=Kb(d,c.o.u).divideAndRemainder(a),e={u:d[0],x:e},d=d[1];return[e,d]},Ya=function(j,a){var c=L(j,a);c[1]=c[1].signum()?{u:c[1],x:null}:null;return c},yc=function(j,
a,c,d,e){var g,f,d=Kb(c,d),c=c.equals(e)?K:d.divide(e),e=d.divide(e.add(m));0==e.signum()&&(e=m);for(d=c;;){g=D(a,d);if(0<=X(j,g))break;do c=d,d=d.subtract(e).shiftRight(1).add(e),g=D(a,d);while(0>X(j,g));f=D(a,d.add(m));if(0>X(j,f))break;do e=d,d=c.subtract(c.subtract(d).shiftRight(1)),f=D(a,d.add(m));while(0<=X(j,f))}return[d,z(j,g)]},ib={schoolbook:function(){return function(j,a){if(R(j))return a;for(var c=A(a),d=D(j,c.o.u);c=c.x;)d=bb(d),c.o.u.signum()&&(d=E(d,D(j,c.o.u)));return d}},karatsuba:function(j,
a){return function(c,d){var e=c.x,g=d.x;if(!e&&!g){var f=c.u.multiply(d.u),h=f.shiftRight(s);return h.signum()?{u:ma(f),x:{u:h,x:null}}:{u:f,x:null}}for(var f=c,k=d,l=1;e||g;++l){if(e)e=e.x;if(g)g=g.x;if(e||g){if(f&&(f=f.x,e))e=e.x;if(k&&(k=k.x,g))g=g.x}}var h=l<j?a:arguments.callee,e=f?f.x:null,g=k?k.x:null,l=e&&g?h(e,g):null,f=oa(c,f),o=oa(d,k),k=f&&o?h(f,o):null,Yd=f?e?E(f,e):f:e,o=o?g?E(o,g):o:g,h=(f=k?l?E(k,l):k:l)?z(h(Yd,o),f):h(Yd,o);return e?xc(xc(l,h,c,e),k,c,e):xc(xc(l,h,d,g),k,d,g)}},toom:function(j,
a,c){var d=2*j-1;a<j&&(a=j);for(var a=H(a),e=t.valueOf(j),g=[],f=[],h=d-1;2<=h;--h){for(var k=[],l=j-1;2<=l;--l)k[l]=t.valueOf(Ca(h,l));g[h]=k[1]=t.valueOf(h);f[h]=k}g[1]=m;return function(h,ab){var k=db(h),l=db(ab),l=0>X(k,l)?l:k;if(0>X(l,a))return c(h,ab);var k=L(l,e),k=k[1].signum()?E(k[0],y):k[0],o=0>X(l,a)?c:arguments.callee,ea=F(j),vb=F(j);ea[0]=Z(h,k);vb[0]=Z(ab,k);for(var p,m=h,n=ab,l=1;l<j;++l)m&&(m=Ia(m,k)),ea[l]=m?Z(m,k):null,n&&(n=Ia(n,k)),vb[l]=n?Z(n,k):null;var s=F(d),t;s[0]=ea[0]&&
vb[0]?o(ea[0],vb[0]):null;m=ea[0];n=vb[0];for(p=1;p<j;++p)ea[p]&&(m=m?E(m,ea[p]):ea[p]),vb[p]&&(n=n?E(n,vb[p]):vb[p]);s[1]=o(m,n);for(l=2;l<d;++l){m=ea[0];n=vb[0];for(p=1;p<j;++p)t=f[l][p],ea[p]&&(m=m?E(m,D(ea[p],t)):D(ea[p],t)),vb[p]&&(n=n?E(n,D(vb[p],t)):D(vb[p],t));s[l]=o(m,n)}o=F(d);for(p=1;p<d;++p)o[p]=s[p-1]?z(s[p],s[p-1]):s[p];for(p=1;p<d;++p)s[p]=o[p];for(l=2;l<d;++l){for(p=l;p<d;++p)o[p]=s[p-1]?z(s[p],s[p-1]):s[p];t=g[l];for(p=l;p<d;++p)s[p]=o[p]?L(o[p],t)[0]:null}t=s[d-1];for(l=d-3;0<=l;--l)o[l]=
t;for(l=d-2;0<l;--l)for(p=0;p<l;++p)o[p]=o[p]?s[l]=z(s[l],D(o[p],g[l-p])):s[l];for(p=s[l=d-1];!p;)p=s[--l];for(;0<=--l;)p=Fa(p,k),s[l]&&(p=E(p,s[l]));return p}},fft:function(j,a,c,d){var e="undefined"!=typeof d&&"undefined"!=typeof d.limit?d.limit:Ma(Ca(2,2*(25-s)+1),2147483648),g=function(j){for(var a=1;2147483648>=a;a*=2)j[a]=1<<(Hc(a)/Kc>>1);return j}({}),f=function(j){var a,c,d,e,v,x;a=j.length;var u=F(g[a]);u[0]=0;for(v=1;2*v<a;v*=2){a>>>=1;for(d=0;d<v;++d)u[v+d]=u[d]+a}if(v==a)for(a=1;a<v;++a)for(d=
0;d<a;++d)e=d+u[a],c=a+u[d],x=j[e],j[e]=j[c],j[c]=x;else for(a=1;a<v;++a)for(d=0;d<a;++d)e=d+u[a],c=a+u[d],x=j[e],j[e]=j[c],j[c]=x,x=j[e+v],j[e+v]=j[c+v],j[c+v]=x},h=2*Kd,k=function(j){var a=j.length,c,d,e,v,x,u,g,Ea,$a,k,l,o,p;f(j);var ea=-h;for(d=1;(c=d<<1)<=a;d=c){e=d>>1;ea*=0.5;for(u=0;u<a;u+=c)Ea=u+d,o=j[Ea],j[Ea]=j[u]-o,j[u]+=o;for(v=1;v<e;++v){k=Jc(ea*v);l=Ic(ea*v);for(x=0;x<a;x+=c)u=x+v,g=x+d-v,Ea=x+d+v,$a=x+c-v,o=k*j[Ea]+l*j[$a],p=k*j[$a]-l*j[Ea],j[Ea]=-j[g]+p,j[$a]=j[g]+p,j[g]=j[u]-o,j[u]+=
o}}};return function(d,u){if(!u.x)return D(d,u.u);if(!d.x)return D(u,d.u);var g=F(2),Ea=F(2),l=0,o=0,m;for(m=d;m;m=m.x){if(4294967295==l)return c(d,u);g[l++]=m.u.intValue()}for(m=u;m;m=m.x){if(4294967295==o)return c(d,u);Ea[o++]=m.u.intValue()}var U=l+o;if(U<j)return a(d,u);if(U>e)return c(d,u);var U=Ld(U-1),M=U>>>1,q;for(q=U-1;q>=l;)g[q--]=0;for(q=U-1;q>=o;)Ea[q--]=0;k(g);k(Ea);g[0]*=Ea[0];g[M]*=Ea[M];var $;for(q=M-1;0<q;--q)m=g[q],l=g[U-q],$=Ea[q],o=Ea[U-q],g[q]=m*$-l*o,g[U-q]=m*o+l*$;q=g.length;
var w,B,z,y,gb,A,C,E;g[0]*=0.5;g[q>>>1]*=0.5;for(var eb=h/q,Ea=q;1<=(m=Ea>>>1);Ea=m){l=m>>1;for(w=0;w<q;w+=Ea)z=w+m,C=g[w]-g[z],g[w]+=g[z],g[z]=C;for(o=1;o<l;++o){gb=Jc(eb*o);A=Ic(eb*o);for($=0;$<q;$+=Ea)w=$+o,B=$+m-o,z=$+m+o,y=$+Ea-o,C=g[w]-g[B],E=g[y]+g[z],g[w]+=g[B],g[B]=g[y]-g[z],g[z]=gb*C+A*E,g[y]=gb*E-A*C}eb*=2}f(g);m=$=Ea={};q=w=0;l=U-1;if(15<s)for(;q<l;){if(o=Jd(g[q++]/M)+w,w=o/n|0,(m=m.x={u:(o%=n)?t.valueOf(o):p}).u.signum())$=m}else for(;q<l;)if(o=(g[q++]/M+0.5|0)+w,w=o/n|0,(m=m.x={u:(o%=
n)?t.valueOf(o):p}).u.signum())$=m;w?m.x={u:t.valueOf(w),x:null}:$.x=null;return Ea.x}},array:function(j,a){return function(c,d){if(!d.x)return D(c,d.u);if(!c.x)return D(d,c.u);var e=F(2),g=F(2),f,h;for(f=0,h=c;h;h=h.x){if(4294967295==f)return a(c,d);e[f++]=h.u}for(f=0,h=d;h;h=h.x){if(4294967295==f)return a(c,d);g[f++]=h.u}if(4294967295<e.length+g.length)return a(c,d);var e=j(e,g),g={},l=e.length;for(h=g,f=0;f<l;++f)h=h.x={u:e[f]};h.x=null;return g.x}},aschoolbook:function(){return function(j,a){var c=
j.length,d=a.length;if(0==c||0==d)return[];if(1==d)return lc(j,a[0]);if(1==c)return lc(a,j[0]);var e=F(c+d),d=d-1,g=a[d],f=j[0].multiply(g),h=f.shiftRight(s);e[d]=h.signum()?ma(f):f;for(var l=1;l<c;)f=j[l].multiply(g).add(h),h=f.shiftRight(s),e[d+l++]=h.signum()?ma(f):f;for(e[d+l]=h;0<=--d;){g=a[d];f=j[0].multiply(g);h=f.shiftRight(s);e[d]=h.signum()?ma(f):f;for(l=1;l<c;)f=j[l].multiply(g),f=(h.signum()?f.add(h):f).add(e[d+l]),h=f.shiftRight(s),e[d+l++]=h.signum()?ma(f):f;for(;h.signum();)f=e[d+l].add(h),
h=f.shiftRight(s),e[d+l++]=h.signum()?ma(f):f}0==e[e.length-1].signum()&&e.pop();return e}},akaratsuba:function(j,a){return function(c,d){var e=c.length,g=d.length;if(0==e||0==g)return[];var f=e<g?g:e;if(1==f){g=c[0].multiply(d[0]);if(0==g.signum())return[];var h=g.shiftRight(s);return h.signum()?[ma(g),h]:[g]}f=f+1>>>1;0==f&&(f=2147483648);var h=f<j?a:arguments.callee,l,k,o;e>f?(e=c.slice(f),l=$c(c,f)):(e=[],l=c);g>f?(k=d.slice(f),o=$c(d,f)):(k=[],o=d);var p=h(e,k),g=h(l,o),h=Xa(h(vc(l,e),vc(o,k)),
vc(g,p));return wc(wc(p,h,f),g,f)}},atoom:function(j,a,c){var d=2*j-1;a<j&&(a=j);for(var e=[],g=[],f=d-1;2<=f;--f){for(var h=[],l=j-1;2<=l;--l)h[l]=t.valueOf(Ca(f,l));e[f]=h[1]=t.valueOf(f);g[f]=h}e[1]=m;return function(f,h){var ub=f.length,l=h.length;if(0==ub||0==l)return[];ub=ub<l?l:ub;if(ub<a)return c(f,h);for(var ub=Gc(ub/j),k=ub<a?c:arguments.callee,ab=F(j),o=F(j),ea=l=0;l<j;++l,ea+=ub)ab[l]=Zc(f,ea,ea+ub),o[l]=Zc(h,ea,ea+ub);ea=F(d);ea[0]=k(ab[0],o[0]);var m,n=ab[0].slice(),s=o[0].slice(),U;
for(m=1;m<j;++m)va(n,ab[m]),va(s,o[m]);ea[1]=k(n,s);for(l=2;l<d;++l){n=ab[0].slice();s=o[0].slice();for(m=1;m<j;++m)va(n,lc(ab[m],U=g[l][m])),va(s,lc(o[m],U));ea[l]=k(n,s)}k=F(d);for(m=1;m<d;++m)k[m]=Xa(ea[m],ea[m-1]);for(m=1;m<d;++m)ea[m]=k[m];for(l=2;l<d;++l){for(m=l;m<d;++m)k[m]=Xa(ea[m],ea[m-1]);U=e[l];for(m=l;m<d;++m){ab=ea;o=m;var n=k[m],s=U,t=n.length;if(0==t)n=[n,p];else{var q=t-1,M=void 0,$=n[q].divideAndRemainder(s);$[0].signum()?(M=F(t),M[q]=$[0]):M=F(q);for($=$[1];0<=--q;)$=Kb($,n[q]).divideAndRemainder(s),
M[q]=$[0],$=$[1];n=[M,$]}ab[o]=n[0]}}U=ea[d-1];for(l=d-3;0<=l;--l)k[l]=U;for(l=d-2;0<l;--l)for(m=0;m<l;++m)k[m]=k[m].length?ea[l]=Xa(ea[l],lc(k[m],e[l-m])):ea[l];for(m=ea[l=d-1];0==m.length;)m=ea[--l];for(;0<=--l;)m=wc(m,ea[l],ub);return m}},afft:function(j,a,c){var d=Ma(Ca(2,2*(25-s)+1),2147483648),e=function(j){for(var a=1;2147483648>=a;a*=2)j[a]=1<<(Hc(a)/Kc>>1);return j}({}),g=function(j){var a,c,d,v,x,g;a=j.length;var f=F(e[a]);f[0]=0;for(x=1;2*x<a;x*=2){a>>>=1;for(d=0;d<x;++d)f[x+d]=f[d]+a}if(x==
a)for(a=1;a<x;++a)for(d=0;d<a;++d)v=d+f[a],c=a+f[d],g=j[v],j[v]=j[c],j[c]=g;else for(a=1;a<x;++a)for(d=0;d<a;++d)v=d+f[a],c=a+f[d],g=j[v],j[v]=j[c],j[c]=g,g=j[v+x],j[v+x]=j[c+x],j[c+x]=g},f=2*Kd,h=function(j){var a=j.length,c,d,e,v,x,u,h,$a,l,k,ab,o,p;g(j);var m=-f;for(d=1;(c=d<<1)<=a;d=c){e=d>>1;m*=0.5;for(u=0;u<a;u+=c)$a=u+d,o=j[$a],j[$a]=j[u]-o,j[u]+=o;for(v=1;v<e;++v){k=Jc(m*v);ab=Ic(m*v);for(x=0;x<a;x+=c)u=x+v,h=x+d-v,$a=x+d+v,l=x+c-v,o=k*j[$a]+ab*j[l],p=k*j[l]-ab*j[$a],j[$a]=-j[h]+p,j[l]=j[h]+
p,j[h]=j[u]-o,j[u]+=o}}};return function(e,$a){var l=e.length,k=$a.length,o=l+k;if(o<j)return a(e,$a);if(o>d)return c(e,$a);var o=Ld(o-1),m=o>>>1,U,q,M,$,w=F(o),z=F(o);for(U=0,q=o-1;U<l;)w[q--]=e[U++].intValue();for(;0<=q;)w[q--]=0;for(U=0,q=o-1;U<k;)z[q--]=$a[U++].intValue();for(;0<=q;)z[q--]=0;h(w);h(z);w[0]*=z[0];w[m]*=z[m];for(q=m-1;0<q;--q)l=w[q],k=w[o-q],M=z[q],$=z[o-q],w[q]=l*M-k*$,w[o-q]=l*$+k*M;U=w.length;var B,y,gb,A,C,D,eb,E;w[0]*=0.5;w[U>>>1]*=0.5;var yb=f/U;for(q=U;1<=(z=q>>>1);q=z){l=
z>>1;for(B=0;B<U;B+=q)gb=B+z,eb=w[B]-w[gb],w[B]+=w[gb],w[gb]=eb;for(k=1;k<l;++k){C=Jc(yb*k);D=Ic(yb*k);for($=0;$<U;$+=q)B=$+k,y=$+z-k,gb=$+z+k,A=$+q-k,eb=w[B]-w[y],E=w[A]+w[gb],w[B]+=w[y],w[y]=w[A]-w[gb],w[gb]=C*eb+D*E,w[A]=C*E-D*eb}yb*=2}g(w);l=0;$=F(o-1);if(15<s)for(U=0,q=o-2;0<=q;++U,--q)k=Jd(w[q]/m)+l,l=k/n|0,$[U]=(k%=n)?(M=U,t.valueOf(k)):p;else for(U=0,q=o-2;0<=q;++U,--q)k=(w[q]/m+0.5|0)+l,l=k/n|0,$[U]=(k%=n)?(M=U,t.valueOf(k)):p;l?$[U]=t.valueOf(l):$.splice(M+1);return $}}},Xb={},S=mb(ib,Xb,
null!=q.algoMul?q.algoMul:["fft",0,["karatsuba",9,["schoolbook"]],["karatsuba",9,["schoolbook"]]]),mc=function(j,a,c){var d,e=Fa(Ga,a);do d=c,c=Ia(S(z(e,S(j,c)),c),a);while(!tc(d,c));return c},nc={schoolbook:function(){return function(j,a){if(R(a))return[j,null];if(!a.x)return Ya(j,a.u);for(var c=a,d=j,e={o:c,x:null},g={o:d,x:null};c=c.x;){if(!(d=d.x))return[null,j];e={o:c,x:e};g={o:d,x:g}}var f;if(d.x)j=na(j),g=A(j);else{if(0==(f=g.o.u.compareTo(e.o.u)))for(c=g,d=e;(c=c.x)&&!(f=c.o.u.compareTo((d=
d.x).o.u)););if(0==f)return[Ha(),null];if(0>f)return[null,j]}c=g;d=e;for(f=c.o.u.compareTo(d.o.u);d=d.x;)c=c.x,0==f&&(f=c.o.u.compareTo(d.o.u));var h,l,k=e.o.u;if(0>f)c=c.x,h=g.o.u,l=g.x.o.u;else if(0<f)h=p,l=g.o.u;for(var g=null,o;;){h=f?yc(c.o,a,h,l,k):[m,null];g={u:h[0],x:g};if(!(c=c.x)){j=h[1];break}c.o.x=h[1];d=e;if(h[1]){o=A(h[1]);h=o.o.u;l=o.x?o.x.o.u:c.o.u;for(f=o.o.u.compareTo(d.o.u);o=o.x;)d=d.x,0==f&&(f=o.o.u.compareTo(d.o.u));(d=d.x)?0==f&&(f=c.o.u.compareTo(d.o.u)):f=-1}else{for(;0==
c.o.u.signum()&&!(g={u:p,x:g},!(c=c.x)););if(!c){j=null;break}c.o.x=null;f=c.o.u.compareTo(d.o.u);h=c.o.u;l=c.x?c.x.o.u:null}if(d){for(;(d=d.x)&&(c=c.x);){0==f&&(f=c.o.u.compareTo(d.o.u));g={u:p,x:g}}if(!c)break;if(0>f)if(c=c.x)g={u:p,x:g};else break;else 0<f&&(l=h,h=p)}}return[g,j]}},high1:function(){return function(j,a){if(R(a))return[j,null];if(!a.x)return Ya(j,a.u);for(var c=a,d=j,e={o:c,x:null},g={o:d,x:null};c=c.x;){if(!(d=d.x))return[null,j];e={o:c,x:e};g={o:d,x:g}}var f,h;if(!d.x){if(0==(f=
g.o.u.compareTo(e.o.u)))for(c=g,h=e;(c=c.x)&&!(f=c.o.u.compareTo((h=h.x).o.u)););if(0==f)return[Ha(),null];if(0>f)return[null,j]}var l,k=Q.divide(e.o.u.add(m));(l=0<k.compareTo(m))?(a=D(a,k),j=D(j,k),e=A(a),g=A(j)):d.x&&(j=na(j),g=A(j));c=g;h=e;for(f=c.o.u.compareTo(h.o.u);h=h.x;)c=c.x,0==f&&(f=c.o.u.compareTo(h.o.u));var o,n,d=e.o.u;if(0>f)c=c.x,o=g.o.u,n=g.x.o.u;else if(0<f)o=p,n=g.o.u;for(var g=null,s;;){o=f?yc(c.o,a,o,n,d):[m,null];g={u:o[0],x:g};if(!(c=c.x)){j=o[1];break}c.o.x=o[1];h=e;if(o[1]){s=
A(o[1]);o=s.o.u;n=s.x?s.x.o.u:c.o.u;for(f=s.o.u.compareTo(h.o.u);s=s.x;)h=h.x,0==f&&(f=s.o.u.compareTo(h.o.u));(h=h.x)?0==f&&(f=c.o.u.compareTo(h.o.u)):f=-1}else{for(;0==c.o.u.signum()&&!(g={u:p,x:g},!(c=c.x)););if(!c){j=null;break}c.o.x=null;f=c.o.u.compareTo(h.o.u);o=c.o.u;n=c.x?c.x.o.u:null}if(h){for(;(h=h.x)&&(c=c.x);){0==f&&(f=c.o.u.compareTo(h.o.u));g={u:p,x:g}}if(!c)break;if(0>f)if(c=c.x)g={u:p,x:g};else break;else 0<f&&(n=o,o=p)}}return[g,l&&j?L(j,k)[0]:j]}},knuth1:function(){return function(j,
a){if(R(a))return[j,null];if(!a.x)return Ya(j,a.u);for(var c=a,d=j,e={o:c,x:null},g={o:d,x:null};c=c.x;){if(!(d=d.x))return[null,j];e={o:c,x:e};g={o:d,x:g}}var f,h;if(!d.x){if(0==(f=g.o.u.compareTo(e.o.u)))for(c=g,h=e;(c=c.x)&&!(f=c.o.u.compareTo((h=h.x).o.u)););if(0==f)return[Ha(),null];if(0>f)return[null,j]}var l,k=Q.divide(e.o.u.add(m));(l=0<k.compareTo(m))?(a=D(a,k),j=D(j,k),e=A(a),g=A(j)):d.x&&(j=na(j),g=A(j));c=g;h=e;for(f=c.o.u.compareTo(h.o.u);h=h.x;)c=c.x,0==f&&(f=c.o.u.compareTo(h.o.u));
var o,n,d=e.o.u;if(0>f)c=c.x,o=g.o.u,n=g.x.o.u;else if(0<f)o=p,n=g.o.u;for(var g=null,s;;){f?(h=c.o,f=a,s=d,n=o.equals(s)?K:Kb(o,n).divide(s),o=D(f,n),0>X(h,o)&&(n=n.subtract(m),o=z(o,f),0>X(h,o)&&(n=n.subtract(m),o=z(o,f))),n=[n,z(h,o)]):n=[m,null];g={u:n[0],x:g};if(!(c=c.x)){j=n[1];break}c.o.x=n[1];h=e;if(n[1]){s=A(n[1]);o=s.o.u;n=s.x?s.x.o.u:c.o.u;for(f=s.o.u.compareTo(h.o.u);s=s.x;)h=h.x,0==f&&(f=s.o.u.compareTo(h.o.u));(h=h.x)?0==f&&(f=c.o.u.compareTo(h.o.u)):f=-1}else{for(;0==c.o.u.signum()&&
!(g={u:p,x:g},!(c=c.x)););if(!c){j=null;break}c.o.x=null;f=c.o.u.compareTo(h.o.u);o=c.o.u;n=c.x?c.x.o.u:null}if(h){for(;(h=h.x)&&(c=c.x);){0==f&&(f=c.o.u.compareTo(h.o.u));g={u:p,x:g}}if(!c)break;if(0>f)if(c=c.x)g={u:p,x:g};else break;else 0<f&&(n=o,o=p)}}return[g,l&&j?L(j,k)[0]:j]}},knuth2:function(){return function(j,a){if(R(a))return[j,null];if(!a.x)return Ya(j,a.u);for(var c=a,d=j,e={o:c,x:null},g={o:d,x:null};c=c.x;){if(!(d=d.x))return[null,j];e={o:c,x:e};g={o:d,x:g}}var f,h;if(!d.x){if(0==(f=
g.o.u.compareTo(e.o.u)))for(c=g,h=e;(c=c.x)&&!(f=c.o.u.compareTo((h=h.x).o.u)););if(0==f)return[Ha(),null];if(0>f)return[null,j]}var l,k=Q.divide(e.o.u.add(m));(l=0<k.compareTo(m))?(a=D(a,k),j=D(j,k),e=A(a),g=A(j)):d.x&&(j=na(j),g=A(j));c=g;h=e;for(f=c.o.u.compareTo(h.o.u);h=h.x;)c=c.x,0==f&&(f=c.o.u.compareTo(h.o.u));var o,n,s,q=e.o.u,U=e.x.o.u;if(0>f)c=c.x,o=g.o.u,n=(d=g.x).o.u,s=d.x.o.u;else if(0<f)o=p,n=g.o.u,s=g.x.o.u;for(var g=null,t;;){if(f){d=c.o;h=a;t=o;f=s;s=q;o=U;var M=Kb(t,n);n=t.equals(s)?
K:M.divide(s);t=M.subtract(n.multiply(s));M=void 0;0<t.compareTo(K)?M=D(h,n):(t=Kb(t,f),f=n.multiply(o),0<f.compareTo(t)?(n=n.subtract(m),0<f.subtract(o).compareTo(Kb(s,t))?(n=n.subtract(m),M=D(h,n)):(M=D(h,n),0>X(d,M)&&(n=n.subtract(m),M=z(M,h)))):(M=D(h,n),0>X(d,M)&&(n=n.subtract(m),M=z(M,h))));n=[n,z(d,M)]}else n=[m,null];g={u:n[0],x:g};if(!(c=c.x)){j=n[1];break}c.o.x=n[1];h=e;if(n[1]){t=A(n[1]);o=t.o.u;(d=t.x)?(n=d.o.u,s=(d=d.x)?d.o.u:c.o.u):(n=c.o.u,s=(d=c.x)?d.o.u:null);for(f=t.o.u.compareTo(h.o.u);t=
t.x;)h=h.x,0==f&&(f=t.o.u.compareTo(h.o.u));(h=h.x)?0==f&&(f=c.o.u.compareTo(h.o.u)):f=-1}else{for(;0==c.o.u.signum()&&!(g={u:p,x:g},!(c=c.x)););if(!c){j=null;break}c.o.x=null;f=c.o.u.compareTo(h.o.u);o=c.o.u;(d=c.x)?(n=d.o.u,s=(d=d.x)?d.o.u:null):n=s=null}if(h){for(;(h=h.x)&&(c=c.x);){0==f&&(f=c.o.u.compareTo(h.o.u));g={u:p,x:g}}if(!c)break;if(0>f)if(c=c.x)g={u:p,x:g};else break;else 0<f&&(s=n,n=o,o=p)}}return[g,l&&j?L(j,k)[0]:j]}},dac:function(){var j=function(j,c,d){var e=db(j),d=Ka(d),g=Ka(d),
f=null,h=X(e,g);0<h&&(f=z(e,g),d=E(d,f),j=Fa(j,f),c=Fa(c,f));if(0<=h)if(h=X(j,Fa(c,d)),0<h)d=E(d,y),j=bb(j),c=bb(c),f=f?E(f,y):y;else if(0==h)return[Fa(Ha(),d),null];Ra(d)&&(d=E(d,y),j=bb(j),c=bb(c),f=f?E(f,y):y);d=Na(d);e=Ia(j,d);e=a(e,c,d);j=Z(j,d);c=(j=Oc(e[1],j,d))?a(j,c,d):[null,null];return[Oc(e[0],c[0],d),f&&c[1]?Ia(c[1],f):c[1]]},a=function(c,d,e){var g=Ia(c,e),f=Ia(g,e),h=Ia(d,e);if(!f||0>X(f,h)){if(R(e))f=Ya(g,h[0]),g=f[1];else{var l=Ra(e),k;l?(k=E(e,y),g=bb(g),h=bb(h)):k=e;f=Na(k);k=X(db(g),
E(k,f));0==k&&X(g,Fa(h,f));k=X(g,Fa(h,f));f=0<k?j(g,h,f):0>k?a(g,h,f):[Fa(Ha(),f),null];g=l&&f[1]?f[1].x:f[1]}f=f[0]}else{k=f=K;for(l=e;l=z(l,y);)k=k.x={u:K};k.x=null;g=z(E(g,h),Fa(h,e))}c=Z(c,e);c=Oc(g,c,e);if((e=(e=Z(d,e))?S(f,e):null)&&(!c||0>X(c,e)))f=z(f,y),c=c?E(c,d):d,0>X(c,e)&&(f=z(f,y),c=E(c,d));return[f,e?z(c,e):c]};return function(c,d){if(R(d))return[c,null];if(!d.x)return Ya(c,d.u);var e=X(c,d);if(0>e)return[null,c];if(0==e)return[Ha(),null];for(e=d.x;e.x;)e=e.x;var g=0,f=s-e.bitLength();
f&&(c=sa(c,f),d=sa(d,f));e=db(d);Ra(e)&&(e=E(e,y),c=bb(c),d=bb(d),++g);var h=Na(e),e=X(db(c),E(e,h));0==e&&(e=X(c,Fa(d,h)));if(0>e)e=a(c,d,h);else if(0<e)e=j(c,d,h);else return e=Ha(),[Fa(e,h),null];g&&e[1]&&(e[1]=Cb(e[1],g));f&&e[1]&&(e[1]=Tb(e[1],f));return e}},newton:function(){return function(j){if(R(b))return[j,null];if(!b.x)return Ya(j,b.u);var a=db(j),c=db(b);if(0>X(a,c))return[null,j];c=E(a,c);a=Fa(y,a);a=mc(b,c,a);if(a=Ia(S(a,j),c)){var c=E(a,y),d=S(c,b);return 0<=X(j,d)?[c,z(j,d)]:[a,z(j,
z(d,b))]}return 0<=X(j,b)?[Ha(),z(j,b)]:[null,j]}},barrett:function(j){var a=3==j?function(j,a){var c=A(a).o.u.add(m);if(ga(c)){var d,e=db(a);if(0<X(j,e)){for(var g=d={u:p},e=z(j,e);e=z(e,y);)g=g.x={u:p};g.x=Ha()}else d=Ha();return d}g=d={u:p};for(e=z(E(j,y),e);e=z(e,y);)g=g.x={u:p};g.x=Ha();return L(d,c)[0]}:2==j?function(j,a){var c,d=db(a);c=A(a);var e=Q.divide(c.o.u.add(m));if(0<X(j,d)){for(var g=c={u:p},d=z(j,d);d=z(d,y);)g=g.x={u:p};g.x={u:e,x:null}}else c={u:e,x:null};return c}:function(j,a){var c,
d=db(a);if(0<X(j,d)){for(var e=c={u:p},d=z(j,d);d=z(d,y);)e=e.x={u:p};e.x=Ha()}else c=Ha();return c};return function(j,c){if(R(c))return[j,null];if(!c.x)return Ya(j,c.u);var d=db(j),e;e=c;for(var g=1;536870912>g&&e.x;++g)e=e.x;if(536870912>g)e=[H(g),e];else{for(var f=N;e.x;){e=e.x;for(g=1;536870912>g&&e.x;++g)e=e.x;if(536870912>g){f=E(f,H(g));break}f=E(f,N)}e=[f,e]}g=e[0];e=X(d,g);if(0>e)return[null,j];if(0==e){e=X(j,c);if(0>e)return[null,j];if(0==e)return[Ha(),null]}e=z(E(d,y),g);d=mc(c,d,a(d,c));
g=Ia(j,z(g,y));(d=Ia(S(g,d),e))||(d=Ha());var h,g=S(c,d);e=X(j,g);if(0>e){do d=z(d,y),g=z(g,c);while(0>(e=X(j,g)));h=e?z(j,g):null}else if(0<e)for(var l;;)if(f=E(d,y),l=E(g,c),e=X(j,l),0<e)d=f,g=l;else{0==e?(d=f,h=null):h=z(j,g);break}else h=null;return[d,h]}}},ob={},Db=mb(nc,ob,null!=q.algoDiv?q.algoDiv:["knuth2"]),Y=function(j,a){if(!a.mag)return j;if(!j.mag)return a;var c=C(j),d=C(a);return c!=d?(d=X(j.mag,a.mag),0==d?ba(c):0>d?{sign:-c,mag:z(a.mag,j.mag)}:{sign:c,mag:z(j.mag,a.mag)}):{sign:c,
mag:E(j.mag,a.mag)}},aa=function(j,a){return!a.mag?j:!j.mag?Ja(a):Y(j,Ja(a))},qa=function(j){var a=C(j);return 0==a?ca(1):0<a?{sign:1,mag:E(j.mag,y)}:R(j.mag)?ba(1):{sign:-1,mag:z(j.mag,y)}},Pc=function(j){var a=C(j);0==a?(j.sign=1,j.mag={value:m}):0<a?j.mag=E(j.mag,y):R(j.mag)?(j.sign=1,j.mag=null):j.mag=z(j.mag,y);return j},jb=function(j){var a=C(j);return 0==a?ca(-1):0>a?{sign:-1,mag:E(j.mag,y)}:R(j.mag)?ba(1):{sign:1,mag:z(j.mag,y)}},oc=function(j){var a=C(j);0==a?(j.sign=-1,j.mag={value:m}):
j.mag=0>a?E(j.mag,y):R(j.mag)?null:z(j.mag,y);return j},ja=function(j,a){var c=j.sign*a.sign;return!j.mag||!a.mag?ba(c):{sign:c,mag:S(j.mag,a.mag)}},Yb=function(j,a){if(!a.mag)return null;var c=j.sign,d=c*a.sign;if(!j.mag)return[ba(d),ba(c)];var e=Db(j.mag,a.mag);e[0]={sign:d,mag:e[0]};e[1]={sign:c,mag:e[1]};return e},Zb=function(j,a){var c=Yb(j,a);return null==c?null:c[0]},kb=function(j,a){var c=Yb(j,a);return null==c?null:c[1]},ad=function(j,a){if(R(a))return a;if(R(j))return j;var c;0>X(j,a)&&
(c=a,a=j,j=c);for(;c=Db(j,a)[1];)j=a,a=c;return a},Qb=function(j,a){if(R(a))return a;if(R(j))return j;var c;if(0==(c=X(j,a)))return j;0>c&&(c=a,a=j,j=c);var d=Ib(j,a);d&&(j=Ub(j,d),a=Ub(a,d));for(;;){if(c=Vb(j))j=Ub(j,c);if(c=Vb(a))a=Ub(a,c);if(0==(c=X(j,a)))break;0<c?j=Na(z(j,a)):a=Na(z(a,j))}return d?ic(a,d):a},sd=31>=s?function(a,c){if(R(a.mag))return[ca(1),ba(1),ca(1)];if(R(c.mag))return[ba(1),ca(1),ca(1)];var d={sign:1,mag:Ib(a.mag,c.mag)};d.mag&&(a=Ua(a,d),c=Ua(c,d));var e=a,g=c,f=Sa,h=sc,l=
ba(1),k=ca(1),o,m;do{o=La(e,!0);e=Ua(e,o);if(o.mag){o=o.mag;m=o.u.intValue();for(o=o.x;;){for(;0<m;--m){if(da(f)||da(h))f=Y(f,c),h=aa(h,a);f=wa(f);h=wa(h)}if(!o)break;o=z(o,y);m=n}}o=La(g,!0);g=Ua(g,o);if(o.mag){o=o.mag;m=o.u.intValue();for(o=o.x;;){for(;0<m;--m){if(da(l)||da(k))l=Y(l,c),k=aa(k,a);l=wa(l);k=wa(k)}if(!o)break;o=z(o,y);m=n}}0<=pa(e,g)?(e=aa(e,g),f=aa(f,l),h=aa(h,k)):(g=aa(g,e),l=aa(l,f),k=aa(k,h))}while(e.mag);return[l,k,cb(g,d)]}:function(a,c){if(R(a.mag))return[ca(1),ba(1),ca(1)];
if(R(c.mag))return[ba(1),ca(1),ca(1)];var d={sign:1,mag:Ib(a.mag,c.mag)};d.mag&&(a=Ua(a,d),c=Ua(c,d));var e=a,g=c,f=Sa,h=sc,l=ba(1),k=ca(1),o;do{o=La(e,!0);for(e=Ua(e,o);o.mag;oc(o)){if(da(f)||da(h))f=Y(f,c),h=aa(h,a);f=wa(f);h=wa(h)}o=La(g,!0);for(g=Ua(g,o);o.mag;oc(o)){if(da(l)||da(k))l=Y(l,c),k=aa(k,a);l=wa(l);k=wa(k)}0<=pa(e,g)?(e=aa(e,g),f=aa(f,l),h=aa(h,k)):(g=aa(g,e),l=aa(l,f),k=aa(k,h))}while(e.mag);return[l,k,cb(g,d)]},td=function(a,c,d){switch(d){case "euclid":return a=!a.mag?!c.mag?ba(1):
tb(c):!c.mag?tb(a):{sign:1,mag:ad(a.mag,c.mag)},a;default:return a=!a.mag?!c.mag?ba(1):tb(c):!c.mag?tb(a):{sign:1,mag:Qb(a.mag,c.mag)},a}},ya=function(a,c){if(0>=C(c))return null;if(R(c.mag))return ba(1);var d=kb(a,c);0>C(d)&&(d=Y(c,d));return d},Pb=31>=s?function(a,c){if(R(c.mag))return ca(1);var d=a,e=c,g=sc,f=ca(1),h;do{h=La(d,!0);d=Ua(d,h);if(h.mag){h=h.mag;i=h.u.intValue();for(h=h.x;;){for(;0<i;--i)da(g)&&(g=aa(g,a)),g=wa(g);if(!h)break;h=z(h,y);i=n}}h=La(e,!0);e=Ua(e,h);if(h.mag){h=h.mag;i=
h.u.intValue();for(h=h.x;;){for(;0<i;--i)da(f)&&(f=aa(f,a)),f=wa(f);if(!h)break;h=z(h,y);i=n}}0<=pa(d,e)?(d=aa(d,e),g=aa(g,f)):(e=aa(e,d),f=aa(f,g))}while(d.mag);return R(e.mag)?0>C(f)?Y(a,f):f:null}:function(a,c){if(R(c.mag))return ca(1);var d=a,e=c,g=sc,f=ca(1),h;do{h=La(d,!0);for(d=Ua(d,h);h.mag;oc(h))da(g)&&(g=aa(g,a)),g=wa(g);h=La(e,!0);for(e=Ua(e,h);h.mag;oc(h))da(f)&&(f=aa(f,a)),f=wa(f);0<=pa(d,e)?(d=aa(d,e),g=aa(g,f)):(e=aa(e,d),f=aa(f,g))}while(d.mag);return R(e.mag)?0>C(f)?Y(a,f):f:null},
zc=function(a,c,d){if(0>=C(c))return null;if(R(c.mag))return ba(1);if(!a.mag)return null;var e=C(a),a=tb(a);if("binary"==d)da(c)?a=Pb(c,a):(a=sd(c,a),a=R(a[2].mag)?0>C(a[1])?Y(c,a[1]):a[1]:null);else if(R(c.mag))a=ba(1);else{for(var d=c,g=Sa,f=ba(1),h,l;0<pa(d,Sa);)h=Yb(a,d),a=d,l=f,0>C(h[1])?(d=Y(h[1],d),f=aa(g,ja(jb(h[0]),f))):(d=h[1],f=aa(g,ja(h[0],f))),g=l;d.mag?(0>C(f)&&(f=Y(c,f)),a=f):a=null}0>e&&(a=Ja(a));return a},Pd=2>=s?function(a){return a}:4>=s?funct