diff --git a/src/js/Abacus.js b/src/js/Abacus.js index b58d51a..9e6ac4b 100644 --- a/src/js/Abacus.js +++ b/src/js/Abacus.js @@ -20005,6 +20005,7 @@ Tensor = Abacus.Tensor = Class(CombinatorialIterator, { add = Arithmetic.add, sub = Arithmetic.sub, mul = Arithmetic.mul, index = Arithmetic.O, J = Arithmetic.J, nd, i; + if (!item) return J; if ("partial" === type) { index = Arithmetic.num(find($.data, item, true)); @@ -20017,14 +20018,22 @@ Tensor = Abacus.Tensor = Class(CombinatorialIterator, { if ("tuple" === type) { nd = n[0]; - if (!nd) return J; - for (n=n[1],i=0; i<nd; i++) index = add(mul(index, n), item[i]); + if (!nd || nd !== item.length) return J; + for (n=n[1],i=0; i<nd; i++) + { + if (0 > item[i] || item[i] >= n) return J; + index = add(mul(index, n), item[i]); + } } else { nd = n.length; - if (!nd) return J; - for (i=0; i<nd; i++) index = add(mul(index, n[i]), item[i]); + if (!nd || nd !== item.length) return J; + for (i=0; i<nd; i++) + { + if (0 > item[i] || item[i] >= n[i]) return J; + index = add(mul(index, n[i]), item[i]); + } } } @@ -20089,6 +20098,14 @@ Tensor = Abacus.Tensor = Class(CombinatorialIterator, { dir = -1 === dir ? -1 : 1; return 0 > dir ? igray(new Array(item.length), item, n) : gray(new Array(item.length), item, n); } + ,toGray: function(item, n) { + dir = -1 === dir ? -1 : 1; + return gray(new Array(item.length), item, n); + } + ,fromGray: function(item, n) { + dir = -1 === dir ? -1 : 1; + return igray(new Array(item.length), item, n); + } ,inversion: function(inv) { // assume inv is tensor component of dimensions: (1,2,..,n-1,n) in this order var i, n = inv.length, perm = n ? [0] : []; @@ -20216,7 +20233,7 @@ Permutation = Abacus.Permutation = Class(CombinatorialIterator, { // random ordering for derangements / involutions / connecteds // is based on random generation, instead of random unranking $.rand = $.rand || {}; - $.rand["involution"] = 1; $.rand["connected"] = 1; + $.rand["involution"] = 1; if ("multiset" === $.type) { $.multiplicity = is_array($.multiplicity) && $.multiplicity.length ? $.multiplicity.slice() : array($.dimension, 1, 0); @@ -20438,21 +20455,33 @@ Permutation = Abacus.Permutation = Class(CombinatorialIterator, { I = Arithmetic.I, J = Arithmetic.J, N, M; n = n || item.length; - if (!item || 0 > n) return J; + if (!item || 0 > n || n !== item.length) return J; if (0===n) return index; item = klass.DUAL(item, n, $); if ("cyclic"=== type) { - // O(1) - index = Arithmetic.num(item[0]); + // O(n) + ii = item[0]; + for (i=0; i<n; i++) + { + x = item[(i+n-ii)%n]; + if (x !== i) return J; + } + index = Arithmetic.num(ii); } else if ("connected" === type) { // O(nlgn) if (n === item.length) { + for (dict={},i=0; i<n; i++) + { + x = item[i]; + if (0 > x || x >= n || 1 === dict[x]) return J; + dict[x] = 1; + } item = permutation2cycles(item)[0]; if (n !== item.length) return J; k = item.indexOf(n-1); @@ -20501,6 +20530,14 @@ Permutation = Abacus.Permutation = Class(CombinatorialIterator, { // adapted from https://github.com/WoDoInc/FindMultisetRank // O(nm) ~ O(n^2) TODO construct O(nlgn) algorithm M = $.multiplicity.slice(); + for (i=0; i<n; i++) + { + x = item[i]; + if (0 > x || x >= M.length || 0 >= M[x]) return J; + M[x]--; + } + if (0 !== M.filter(function(x){return x !== 0;}).length) return J; + M = $.multiplicity.slice(); N = $ && null!=$.count ? $.count : factorial(n,M); for (m=n-1,i=0; i<m && Arithmetic.gt(N, I); i++) { @@ -21217,12 +21254,13 @@ Combination = Abacus.Combination = Class(CombinatorialIterator, { ,rank: function(item, n, $) { var klass = this, Arithmetic = Abacus.Arithmetic, add = Arithmetic.add, sub = Arithmetic.sub, - mul = Arithmetic.mul, O = Arithmetic.O, I = Arithmetic.I, - index = O, i, c, j, k = n[1], N, binom, + mul = Arithmetic.mul, O = Arithmetic.O, I = Arithmetic.I, J = Arithmetic.J, + index = O, i, c, j, k = n[1], N, binom, x, dict, order = $ && null!=$.order ? $.order : LEX, type = $ && $.type ? $.type : "combination"/*"unordered"*/; - if (0 > n[0] || 0 > n[1]) return Arithmetic.J; + if (!item || 0 > n[0] || 0 > n[1] || k !== item.length) return J; + if (0===k) return O; item = klass.DUAL(item, n, $); @@ -21230,7 +21268,11 @@ Combination = Abacus.Combination = Class(CombinatorialIterator, { { // O(k) N = n[0]; - for (i=0; i<k; i++) index = add(mul(index, N), item[i]); + for (i=0; i<k; i++) + { + if (0 > item[i] || item[i] >= N) return J; + index = add(mul(index, N), item[i]); + } } else if (("repeated" === type) || ("combination+repeated" === type)) { @@ -21241,6 +21283,7 @@ Combination = Abacus.Combination = Class(CombinatorialIterator, { // "Algorithms for Unranking Combinations and Other Related Choice Functions", Zbigniew KokosiĀ“nski 1995 (http://riad.pk.edu.pl/~zk/pubs/95-1-006.pdf) // adjust the order to match MSB to LSB // reverse of wikipedia article http://en.wikipedia.org/wiki/Combinatorial_number_system + if (0 > item[i-1] || item[i-1] >= n[0] || (i<k && item[i-1] > item[i])) return J; c = N-1-item[i-1]-i+1; j = k+1-i; if (j <= c) index = add(index, factorial(c, j)); } @@ -21251,7 +21294,13 @@ Combination = Abacus.Combination = Class(CombinatorialIterator, { // "Efficient Algorithms to Rank and Unrank Permutations in Lexicographic Order", Blai Bonet (http://ldc.usb.ve/~bonet/reports/AAAI08-ws10-ranking.pdf) // rank(ordered) = rank(k-n-permutation) // O(klgk) - N = n[0]; item = permutation2inversion(null, item, N); + N = n[0]; + for (dict={},i=0; i<k; i++) + { + if (0 > item[i] || item[i] >= N || 1 === dict[item[i]]) return J; + dict[item[i]] = 1; + } + item = permutation2inversion(null, item, N); for (i=0; i<k; i++) index = add(mul(index, N-i), item[ i ]); } else//if (("combination" === type) || ("unordered" === type) || ("binary" === type)) @@ -21264,6 +21313,7 @@ Combination = Abacus.Combination = Class(CombinatorialIterator, { // "Algorithms for Unranking Combinations and Other Related Choice Functions", Zbigniew KokosiĀ“nski 1995 (http://riad.pk.edu.pl/~zk/pubs/95-1-006.pdf) // adjust the order to match MSB to LSB // reverse of wikipedia article http://en.wikipedia.org/wiki/Combinatorial_number_system + if (0 > item[i-1] || item[i-1] >= N || (i<k && item[i-1] >= item[i])) return J; c = N-1-item[i-1]; j = k+1-i; if (j <= c) index = add(index, factorial(c, j)); } @@ -21358,6 +21408,12 @@ Combination = Abacus.Combination = Class(CombinatorialIterator, { ,binary: function(item, n, dir) { return -1 === dir ? binary2subset(item, n) : subset2binary(item, n); } + ,toBinary: function(item, n) { + return subset2binary(item, n); + } + ,fromBinary: function(item, n) { + return binary2subset(item, n); + } ,pick: function(a, k, type) { return (0 < k) && a.length ? pick(a, k, ("ordered+repeated"!==type)&&("variation+repeated"!==type)&&("repeated+variation"!==type)&&("ordered"!==type)&&("variation"!==type), ("ordered+repeated"===type)||("variation+repeated"===type)||("repeated"===type)||("combination+repeated"===type), new Array(k)) : []; } @@ -21764,6 +21820,7 @@ Subset = Abacus.Powerset = Abacus.Subset = Class(CombinatorialIterator, { { item = (is_binary && !is_reflected) || (is_reflected && !is_binary) ? item.slice(n-item[n],n) : item.slice(0,item[n]); } + if ($.mindimension > item.length || $.maxdimension < item.length) return J; if (0 === n) { index = O; @@ -22632,6 +22689,8 @@ Partition = Abacus.Partition = Class(CombinatorialIterator, { { item = REFLECTED & order ? item.slice(LEN-item[LEN][0],LEN) : item.slice(0,item[LEN][0]); } + if ($.mindimension > item.length || $.maxdimension < item.length) return J; + //if (REFLECTED & order) item = item.slice().reverse(); item = klass.DUAL(item.slice(), n, $, -1); @@ -22643,7 +22702,7 @@ Partition = Abacus.Partition = Class(CombinatorialIterator, { index = O; if (W && M === W) { - return null == K || stdMath.floor(n/M) === K ? O : J; + return (null == K || n === K*M) && 0 === item.filter(function(x){return x !== M;}).length ? O : J; } for (w=0,m=0,i=0; 0<n && i<item.length; i++) { @@ -22654,7 +22713,7 @@ Partition = Abacus.Partition = Class(CombinatorialIterator, { if (M === x) m++; n -= x; } - if (0 !== n) return J; + if (0 !== n || i !== item.length) return J; if (REVERSED & order) index = Arithmetic.sub(last, index); } else @@ -22662,7 +22721,7 @@ Partition = Abacus.Partition = Class(CombinatorialIterator, { index = last; if (W) { - if (M === W) return null == K || stdMath.floor(n/M) === K ? O : J; + if (M === W) return (null == K || n === K*M) && 0 === item.filter(function(x){return x !== M;}).length ? O : J; n -= W; if (K) K--; } for (i=0; 0<n && i<item.length; i++) @@ -22673,7 +22732,7 @@ Partition = Abacus.Partition = Class(CombinatorialIterator, { index = Arithmetic.sub(index, M && 0 === i ? O : part_rank(n, x, W, M, K ? K-i : null)); n -= x; } - if (0 !== n) return J; + if (0 !== n || i !== item.length) return J; if (!(REVERSED & order)) index = Arithmetic.sub(last, index); } } diff --git a/src/js/Abacus.min.js b/src/js/Abacus.min.js index a40db4f..227da34 100644 --- a/src/js/Abacus.min.js +++ b/src/js/Abacus.min.js @@ -5,4 +5,4 @@ * @version: 1.0.6 * 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;u<r;)if(null!=(n=e[u++]))for(t in n)z.call(n,t)&&(i[t]=n[t]);return i}function n(n,t){1===arguments.length&&(t=n,n=null),n=n||null;var e=t[X]||function(){};return z.call(t,"__static__")&&(e=r(e,t.__static__),delete t.__static__),e[F]=n?r(en(n[F]),t):t,e}var b,g,_,a,Z,m,p,v,f,S,h,C,N,d,y,x,q,A,o,I,w,R,M,E,D,T,u,P,k,$,L,j,t,e,U,J={VERSION:"1.0.6"},Q=Math,F="prototype",X="constructor",G=Array[F].slice,z=Object[F].hasOwnProperty,W=Object[F].toString,V=Q.log2||function(n){return Q.log(n)/Q.LN2},B=/^\s+|\s+$/g,H=String[F].trim?function(n){return n.trim()}:function(n){return n.replace(B,"")},K=/\[(\d+)\]/g,Y=/^\{(\d+(?:(?:\.\.\d+)?|(?:,\d+)*))\}$/,nn=/^!\{(\d+(?:(?:\.\.\d+)?|(?:,\d+)*))\}$/,tn=/^(-)?(\d+)(\.(\d+)?(\[\d+\])?)?(e-?\d+)?$/,en=Object.create,rn=Object.keys,un=2147483647,ln=1,sn=-1,on=3,mn=-3,cn=-2,an=2,fn=1,hn=2,dn=4,gn=8,_n=16,vn=32,bn=dn|gn|_n,pn=bn|vn|fn|hn;function yn(){throw new Error("Method not implemented!")}function xn(n){return n}function qn(n){return n instanceof Array||"[object Array]"===W.call(n)}function An(n){return"[object Arguments]"===W.call(n)&&null!=n.length}function In(n){return"[object Object]"===W.call(n)}function On(n){return n instanceof String||"[object String]"===W.call(n)}function wn(n){return"number"==typeof n}function Sn(n){return"function"==typeof n}function Cn(n,t){if(Sn(n))if(qn(t)){for(var e=0,r=t.length;e<r;e++)if(Sn(t[e])&&(n===t[e]||n[F]instanceof t[e]))return!0}else if(Sn(t))return n===t||n[F]instanceof t;return!1}function Nn(n,t){if(qn(t)){for(var e=0,r=t.length;e<r;e++)if(Sn(t[e])&&n instanceof t[e])return!0}else if(Sn(t))return n instanceof t;return!1}function Rn(n){var t=n.toString(2),n=32-t.length;return 0<n?new Array(1+n).join("0")+t:t}function Zn(n){n=String(n).split("_");return n[0]+(1<n.length?"_{"+n[1]+"}":"")}function Mn(n){return Sn(n.toTex)?n.toTex():String(n)}function En(n,t,e,r,i,u,l){var s,o,m,c,a,f,h,d,g=t,_=null,t=e&&(qn(e)||An(e));if(t&&(null==r&&(r=0),null==i&&(i=e.length-1)),null==u&&(u=i<r?-1:1),0===u||t&&!e.length||Q.floor((i-r)/u)+1<=0)return g;if(m=u<0?((d=(r-i)%-u)&&(_=i),f=i+=d,h=r,c=-1,-(-u<<4)):((d=(i-r)%u)&&(_=i),f=r,h=i-=d,c=1,u<<4),a=r+u*(15&Q.floor((i-r)/u+1)),t){for(f=Q.max(0,f),h=Q.min(e.length-1,h),s=r;f<=s&&s<=h&&0<c*(a-s);s+=u)g=n(g,e[s],s);for(o=a;f<=o&&o<=h;o+=m)g=n(g,e[s=o],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s);!0===l&&null!==_&&0<=_&&_<e.length&&(g=n(g,e[_],_))}else{for(s=r;f<=s&&s<=h&&0<c*(a-s);s+=u)g=n(g,s,s);for(o=a;f<=o&&o<=h;o+=m)g=n(g,s=o,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s);!0===l&&null!==_&&(g=n(g,_,_))}return g}function Dn(n,r,i){var u,t=An(n)?G.call(n):qn(n)?n:0<(n|=0)?new Array(n):[];return 0<(n=t.length)&&null!=r&&(i=i||0,En(Sn(u=r)?function(n,t,e){return n[e]=r(e),n}:r===+r?function(n,t,e){return n[e]=u,u+=i,n}:function(n,t,e){return n[e]=r,n},t,t)),t}function Tn(n,t,r){return En(function(n,t,e){return n[e]=t[r],n},n,t)}function Pn(n,t,r,e,i){return null==t?n:En(qn(r)?function(n,t,e){return n[e]=r[e]-1-t,n}:function(n,t,e){return n[e]=r-1-t,n},n,t,e,i)}function kn(n,t,e,r,i){if(null==t)return n;if(null==r&&(r=0),null==i&&(i=t.length-1),n!==t||r<i)for(var u,l=r,s=i;l<=s;l++,s--)u=t[l],n[l]=t[s],n[s]=u;return n}function $n(t,e){return null==e&&(e=0),qn(t)?Dn(t,qn(e)?function(n){return e[n]-1-t[t.length-1-n]}:function(n){return e-t[n]}):t===+t&&e===+e?e-t:J.Arithmetic.sub(J.Arithmetic.num(e),t)}function Ln(n,t,r,e,i){if(null==t)return n;var u=0;return En(qn(r)?function(n,t,e){return n[e]=0<r[e]?(t+u)%r[e]:0,u+=r[e]-n[e],n}:function(n,t,e){return n[e]=(t+u)%r,u+=r-n[e],n},n,t,e,i)}function jn(n,t,r,e,i){if(null==t)return n;var u=0;return En(qn(r)?function(n,t,e){return n[e]=0<r[e]?(t+u)%r[e]:0,u+=t,n}:function(n,t,e){return n[e]=(t+u)%r,u+=t,n},n,t,e,i)}function Un(n){var t=J.Arithmetic;return n=t.num(n),t.xor(n,t.shr(n,t.I))}function Jn(n){var t=J.Arithmetic,e=t.O;for(n=t.num(n);t.gt(n,t.O);)e=t.xor(e,n),n=t.shr(n,t.I);return e}function Qn(n,t,r,e,i){return null==t?n:(null==i&&(i=t.length-1),null==e&&(e=0),n!==t||0!==r?En(function(n,t,e){return n[e+r]=t,n},n,t,r<0?e:i,r<0?i:e,r<0?1:-1):n)}function Fn(n,t,r,i,e,u,l,s){if(null==t)return null;null==r&&(r=1),null==i&&(i=0),null==e&&(e=0),null==u&&(u=t.length-1),null==l&&(l=e),null==s&&(s=u);var o=0,m=s<l?-1:1,c=l;return En(function(n,t,e){return t=i+r*t,n[c]=t-o,o=t,c+=m,n},n,t,e,u)}function Xn(n,t,r,i,e,u,l,s){if(null==t)return null;null==r&&(r=1),null==i&&(i=0),null==e&&(e=0),null==u&&(u=t.length-1),null==l&&(l=e),null==s&&(s=u);var o=0,m=s<l?-1:1,c=l;return En(function(n,t,e){return o+=t,n[c]=i+r*o,c+=m,n},n,t,e,u)}function Gn(n,t,e,r,i,u,l,s,o){o=!0===o,r=-1===r?-1:1,null==i&&(i=0),null==u&&(u=t===+t?t-1:t.length-1),null==l&&(l=0),null==s&&(s=e?e.length-1:-1);var m=u<i?-1:1,c=s<l?-1:1,a=m*(u-i)+1,f=i,h=l,d=0;if(!e||!e.length)return t===+t?Dn(t,i,m):t?t.slice():t;if(null==n&&(n=new Array(o?2*a:a)),t===+t){for(;0<=m*(u-f)&&0<=c*(s-h);)f===e[h]?(o&&(n[d++]=f),f+=m,h+=c):1===r&&f>e[h]||-1===r&&f<e[h]?h+=c:(n[d++]=f,f+=m);for(;0<=m*(u-f);)n[d++]=f,f+=m}else{for(;0<=m*(u-f)&&0<=c*(s-h);)t[f]===e[h]?(o&&(n[d++]=t[f]),f+=m,h+=c):1===r&&t[f]>e[h]||-1===r&&t[f]<e[h]?h+=c:(n[d++]=t[f],f+=m);for(;0<=m*(u-f);)n[d++]=t[f],f+=m}return d<n.length&&(n.length=d),n}function zn(n,t,e,r,i,u,l,s,o,m,c){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),c=!0===c;var a=u<i?-1:1,f=s<l?-1:1,h=a*(u-i)+1+(f*(s-l)+1),d=i,g=l,_=0,v=null,b=!(m=!0!==o&&(o=!1)!==m);if(null==n&&(n=new Array(h)),0===n.length)return c?t:n;for(;0<=a*(u-d)&&0<=f*(s-g);){if(m&&_){if(t[d]===v){d+=a;continue}if(e[g]===v){g+=f;continue}}o?1===r&&t[d][0]<e[g][0]||-1===r&&t[d][0]>e[g][0]?(n[_++]=v=t[d],d+=a):(1===r&&t[d][0]>e[g][0]||-1===r&&t[d][0]<e[g][0]?n[_++]=v=e[g]:(1===r&&t[d][1]<e[g][1]||-1===r&&t[d][1]>e[g][1]?(n[_++]=v=t[d],b&&(n[_++]=e[g])):(n[_++]=v=e[g],b&&(n[_++]=t[d])),d+=a),g+=f):1===r&&t[d]<e[g]||-1===r&&t[d]>e[g]?(n[_++]=v=t[d],d+=a):(1===r&&t[d]>e[g]||-1===r&&t[d]<e[g]?n[_++]=v=e[g]:(n[_++]=v=t[d],b&&(n[_++]=e[g]),d+=a),g+=f)}for(;0<=a*(u-d);)!b&&t[d]===v||(n[_++]=v=t[d],d+=a);for(;0<=f*(s-g);)!b&&e[g]===v||(n[_++]=v=e[g],g+=f);if(c){for(d=a<0?u:i,_=0;_<h;_++,d++)t[d]=n[_];return t}return _<n.length&&(n.length=_),n}function Wn(e,r,n,i,u,t){if(null==u&&(u=0),null==t&&(t=e.length-1),!e.length)return e;var l=t<u?-1:1,s=l*(t-u)+1;if(i=!0===i,s<=1)return i?1==s?[u]:[]:e;r=-1===r?-1:1;var o,m,c,a,f,h=s,d=1,g=2,_=Q.min,v=new Array(s);if(i&&(e=En(function(n,t,e){return n[e-u]=[t,e],n},new Array(s),e,u,t,1),u=0,t=s-1),!0===n)for(a=u,o=[f=-1,-1,0,-1,-1,0];function(n,t,e,r,i,u){var l,s,o,m,c,a,f,h;for(r[0]=-1,r[1]=-1,r[2]=0,r[3]=-1,r[4]=-1,h=a=r[5]=0,m=t,c=-1,l=i?n[m][0]:n[m],o=m+1;o<=e;o++){if(l<(s=i?n[o][0]:n[o])){if(-1===a){c=o-1;break}0===a&&(a=1)}else if(s<l){if(1===a){c=o-1;break}0===a&&(a=-1)}l=s}if(0===a&&(a=u),-1===c)c=e,r[0]=m,r[1]=c,r[2]=a;else{for(t=c+1,f=-1,l=i?n[t][0]:n[t],o=t+1;o<=e;o++){if(l<(s=i?n[o][0]:n[o])){if(-1===h){f=o-1;break}0===h&&(h=1)}else if(s<l){if(1===h){f=o-1;break}0===h&&(h=-1)}l=s}-1===f&&(f=e),0===h&&(h=u),r[0]=m,r[1]=c,r[2]=a,r[3]=t,r[4]=f,r[5]=h}}(e,u,t,o,i,r),c=-1===o[3]?(r!==o[2]&&u<t&&kn(e,e,0,u,t),m=u,t):(o[2]=r!==o[2]?1:0,o[5]=r!==o[5]?1:0,zn(v,e,e,r,o[2]?o[1]:o[0],o[2]?o[0]:o[1],o[5]?o[4]:o[3],o[5]?o[3]:o[4],i,!1,!0),m=o[0],o[4]),-1!==f&&zn(v,e,e,r,a,f,m,c,i,!1,!0),(u=(f=c)+1)<=t;);else for(;0<h;)En(function(n,t){zn(v,e,e,r,u+l*t,u+l*(t+d-1),u+l*(t+d),u+l*_(t+g-1,s-1),i,!1,!0)},null,null,0,s-d-1,g),d<<=1,g<<=1,h>>=1;return i?Tn(e,e,1):e}function Vn(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<u){if(1===t)return 0;0===t&&(t=-1)}u=l}return 0===t?1:t}if(t=-1===t?-1:1,r<=e)return t;if(-1===t)for(u=n[e],i=e+1;i<=r;i++){if(u<(l=n[i]))return 0;u=l}else for(u=n[e],i=e+1;i<=r;i++){if((l=n[i])<u)return 0;u=l}return t}function Bn(n,t,r,e){var i,u=J.Math.rndInt,l=!0===t?1:0;return qn(r)?1<(i=r.length)&&En(function(n){var t,e;return l<i--&&(t=u(0,i-l),e=n[r[i]],n[r[i]]=n[r[t]],n[r[t]]=e),n},n,r,0,i-1):(null==r&&(r=0),null==e&&(e=n.length-1),1<(i=e-r+1)&&En(function(n){var t,e;return l<i--&&(t=u(0,i-l),e=n[r+i],n[r+i]=n[r+t],n[r+t]=e),n},n,n,0,i-1)),n}function Hn(n,t,e,r,i,u,l){null==u&&(u=0),null==l&&(l=n.length-1);var s,o,m,c,a=J.Math.rndInt,f=l-u+1;if(t=Q.min(t,f),e=!0===e,s=new Array(t),!0===r){for(--f,o=0;o<t;o++)s[o]=n[u+a(0,f)];return e&&Wn(s),s}for(o=0;o<t;o++)c=n[u+(m=a(0,--f))],n[u+m]=n[u+f],n[u+f]=c,s[o]=c,i&&(i[o]=m);if(i)for(o=t-1;0<=o;o--)m=i[o],c=n[u+f],n[u+f]=n[u+m],n[u+m]=c,f++;return e&&Wn(s),s}function Kn(n,t,e,r,i,u){var l;if(u=u||function(n,t){return n<t},null==r&&(r=0),null==i&&(i=n.length),r<0)return-1;if(-1===(e=-1===e?-1:1))for(;r<i;)u(n[l=r+i>>>1],t)?r=l+1:i=l;else for(;r<i;)u(t,n[l=r+i>>>1])?i=l:r=l+1;return r}function Yn(n,t,e){var r=n.length;return e=e||" ",r<t?new Array(t-r+1).join(e)+n:n}function nt(n,t){return n+t}function tt(n,t,e,r){var i=J.Arithmetic;return En(function(n,t){return n instanceof _?n.add(t):t instanceof _?t.add(n):i.add(n,t)},i.O,n,t,e,r)}function et(n,t,e,r){var i=J.Arithmetic;return En(function(n,t){return n instanceof _?n.mul(t):t instanceof _?t.mul(n):i.mul(n,t)},i.I,n,t,e,r)}function rt(n,t){var e=J.Arithmetic;return e.equ(t,e.I)?e.O:e.mod(e.sub(t,n),t)}function it(n,t,e){var r=J.Arithmetic;r.num;return r.equ(e,r.I)?r.O:r.mod(r.add(n,t),e)}function ut(n,t,e){var r=J.Arithmetic;r.num;return r.equ(e,r.I)?r.O:(n=r.mod(n,e),t=r.mod(t,e),r.mod(r.mul(n,t),e))}function lt(n,t){for(var e,r,i=J.Arithmetic,u=i.O,l=i.I,s=(i.num,i.J),o=u,m=l,c=t,a=n;!i.equ(u,a);)r=i.div(c,a),e=i.mod(c,a),c=a,a=e,r=i.sub(o,i.mul(r,m)),o=m,m=r;return i.equ(l,c)&&(s=o),i.gt(u,s)&&(s=i.add(s,t)),s}function st(n,t,e){var r,i,u=J.Arithmetic,l=u.O,s=u.I;u.num;if(u.equ(s,e))return l;if(u.equ(l,t))return s;if(i=s,n=u.mod(n,e),u.gt(l,t)&&(t=u.abs(t),n=lt(n,e)),u.equ(s,t))return n;if(u.isDefault()||u.lte(t,un))for(t=u.val(t);0!==t;)1&t&&(i=ut(i,n,e)),t>>=1,n=ut(n,n,e);else for(r=u.II;!u.equ(t,l);)u.equ(s,u.mod(t,r))&&(i=ut(i,n,e)),t=u.div(t,r),n=ut(n,n,e);return i}function ot(n,t){var e,r,i=J.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,un))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 mt(n){var t,e,r,i,u,l,s=J.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,un))return s.num(Q.floor(Q.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 ct(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=Q.pow(n,1/t),t=Q.pow(r,t),Q.abs(n-t)<1&&0<n==0<t?e&&n<0?-r:r:1))}function at(n,t){var e,r,i,u=J.Arithmetic,l=u.I;if(u.gt(l,t))return null;if(u.equ(l,t)||u.equ(n,l)||u.equ(n,u.O))return n;if(u.isDefault()||u.lte(n,un))return u.num(Q.floor(ct(u.val(n),u.val(t))));for(i=u.sub(t,l),e=n,r=u.add(n,l);u.lt(e,r);)r=e,e=u.div(u.add(u.mul(r,i),u.div(n,u.pow(r,i))),t);return r}function ft(n,t,e){var r,i,u,l,s,o,m=J.Arithmetic,c=m.O,a=m.I,f=m.II,h=0;if(t.lt(a))return null;if(t.equ(a)||n.equ(c)||n.equ(a))return n;for(m=n[X],null==e&&(e=6),e=Q.abs(+e),r=t.sub(a),i=new m(n.ttm().rad(t),n.symbol,n.ring),o=n.maxdeg(!0),u=i.pow(r),l=n.sub(u.mul(i));!(l.equ(c)||(s=l.ttm(!0).div(u.mul(t).ttm(!0))).equ(c)||(u=(i=i.add(s)).pow(r),l=n.sub(u.mul(i)),i.maxdeg(!0)*t>o&&(h++,i.terms.length>=e||e<=h))););return 0===h&&t.mod(f).equ(c)?i.abs():i}function ht(n,t){var e,r,i,u=J.Arithmetic,l=u.O,s=u.I,o=u.II,m=p.Epsilon();if(t.equ(l))return null;if(Nn(n,a)&&(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)||Nn(n,Z)?p:n[X]).cast(n),Cn(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=Cn(u,R)?new u(ft(n.num,t),ft(n.den,t)):Cn(u,p)?new u(at(n.num,t.num),at(n.den,t.num)):Cn(u,v)?!n.isReal()||!n.real().gte(l)&&t.mod(o).equ(l)?new u(s,s):new u(p(at(n.real().num,t.num),at(n.real().den,t.num)),p.Zero()):u.One(),i=t.sub(s),Cn(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 dt(n,t,e){var r,i,u,l,s,o,m=J.Arithmetic,c=m.num,a=m.O,f=m.J,h=m.I,d=m.II;if(m.lt(t,a)||m.equ(a,m.mod(t,d)))return null;if((m.lt(n,a)||m.gt(n,t))&&(n=m.mod(n,t)),m.equ(a,n))return m.equ(h,t)?h:a;if(m.equ(h,t)||m.equ(h,n))return h;if(null==e&&(e=Nt(n,t)),!m.equ(h,e))return a;for(u=c(3),l=c(4),s=c(5),o=c(8),r=h,m.lt(n,a)&&(n=m.mul(f,n),m.equ(m.mod(t,l),u)&&(r=m.mul(f,r)));!m.equ(a,n);){for(;m.gt(n,a)&&m.equ(a,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(f,r));i=n,n=t,t=i,m.equ(u,m.mod(n,l))&&m.equ(u,m.mod(t,l))&&(r=m.mul(f,r)),n=m.mod(n,t)}return m.equ(h,t)||(r=a),r}function gt(n,t){var e=J.Arithmetic,r=(e.num,e.I),i=e.II;return st(n,e.div(e.sub(t,r),i),t)}function _t(n,t){var e,r,i,u,l,s,o,m,c,a,f,h,d=J.Arithmetic,g=(d.num,d.O),_=d.I;if(!d.equ(_,gt(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 st(n,d.div(d.add(t,_),4),t);for(l=g;d.lt(l,t)&&!d.equ(r,gt(l,t));l=d.add(l,_));for(s=st(l,i,t),o=st(n,d.div(d.add(i,_),e),t),m=st(n,i,t),c=u,a=g;!d.equ(g,d.mod(d.sub(m,_),t));){for(a=ut(m,m,t),h=1;h<c&&!d.equ(g,d.mod(d.sub(a,_),t));h++)a=ut(a,a,t);o=ut(o,f=st(s,d.shl(_,c-h-1),t),t),s=ut(f,f,t),m=ut(m,s,t),c=h}return n=d.sub(t,o),d.lt(n,o)?n:o}function vt(n,t){var e=J.Arithmetic,r=e.O,i=e.I,u=r;if(e.lt(t,e.II))return r;if(e.lte(n,t))return e.equ(n,t)?i:r;if(e.isDefault()||e.lte(n,un))return e.num(Q.floor(Q.log(e.val(n))/Q.log(e.val(t))));for(;e.gte(n,t);)n=e.div(n,t),u=e.add(u,i);return u}function bt(){var n=J.Arithmetic.num;return bt.list||(bt.list=[n(2),n(3),n(5),n(7),n(11),n(13),n(17),n(19),n(23),n(29),n(31),n(37),n(41),n(43),n(47),n(53),n(59),n(61),n(67),n(71),n(73),n(79),n(83),n(89),n(97),n(101),n(103),n(107),n(109),n(113),n(127),n(131),n(137),n(139),n(149),n(151),n(157),n(163),n(167),n(173),n(179),n(181),n(191),n(193),n(197),n(199),n(211),n(223),n(227),n(229),n(233),n(239),n(241),n(251),n(257),n(263),n(269),n(271),n(277),n(281),n(283),n(293),n(307),n(311),n(313),n(317),n(331),n(337),n(347),n(349),n(353),n(359),n(367),n(373),n(379),n(383),n(389),n(397),n(401),n(409),n(419),n(421),n(431),n(433),n(439),n(443),n(449),n(457),n(461),n(463),n(467),n(479),n(487),n(491),n(499),n(503),n(509),n(521),n(523),n(541),n(547),n(557),n(563),n(569),n(571),n(577),n(587),n(593),n(599),n(601),n(607),n(613),n(617),n(619),n(631),n(641),n(643),n(647),n(653),n(659),n(661),n(673),n(677),n(683),n(691),n(701),n(709),n(719),n(727),n(733),n(739),n(743),n(751),n(757),n(761),n(769),n(773),n(787),n(797),n(809),n(811),n(821),n(823),n(827),n(829),n(839),n(853),n(857),n(859),n(863),n(877),n(881),n(883),n(887),n(907),n(911),n(919),n(929),n(937),n(941),n(947),n(953),n(967),n(971),n(977),n(983),n(991),n(997),n(1009),n(1013),n(1019),n(1021),n(1031),n(1033),n(1039),n(1049),n(1051),n(1061),n(1063),n(1069),n(1087),n(1091),n(1093),n(1097),n(1103),n(1109),n(1117),n(1123),n(1129),n(1151),n(1153),n(1163),n(1171),n(1181),n(1187),n(1193),n(1201),n(1213),n(1217),n(1223),n(1229),n(1231),n(1237),n(1249),n(1259),n(1277),n(1279),n(1283),n(1289),n(1291),n(1297),n(1301),n(1303),n(1307),n(1319),n(1321),n(1327),n(1361),n(1367),n(1373),n(1381),n(1399),n(1409),n(1423),n(1427),n(1429),n(1433),n(1439),n(1447),n(1451),n(1453),n(1459),n(1471),n(1481),n(1483),n(1487),n(1489),n(1493),n(1499),n(1511),n(1523),n(1531),n(1543),n(1549),n(1553),n(1559),n(1567),n(1571),n(1579),n(1583),n(1597),n(1601),n(1607),n(1609),n(1613),n(1619),n(1621),n(1627),n(1637),n(1657),n(1663),n(1667),n(1669),n(1693),n(1697),n(1699),n(1709),n(1721),n(1723),n(1733),n(1741),n(1747),n(1753),n(1759),n(1777),n(1783),n(1787),n(1789),n(1801),n(1811),n(1823),n(1831),n(1847),n(1861),n(1867),n(1871),n(1873),n(1877),n(1879),n(1889),n(1901),n(1907),n(1913),n(1931),n(1933),n(1949),n(1951),n(1973),n(1979),n(1987),n(1993),n(1997),n(1999),n(2003),n(2011),n(2017),n(2027),n(2029),n(2039),n(2053),n(2063),n(2069),n(2081),n(2083),n(2087),n(2089),n(2099),n(2111),n(2113),n(2129),n(2131),n(2137),n(2141),n(2143),n(2153),n(2161),n(2179),n(2203),n(2207),n(2213),n(2221),n(2237),n(2239),n(2243),n(2251),n(2267),n(2269),n(2273),n(2281),n(2287),n(2293),n(2297),n(2309),n(2311),n(2333),n(2339),n(2341),n(2347),n(2351),n(2357),n(2371),n(2377),n(2381),n(2383),n(2389),n(2393),n(2399),n(2411),n(2417),n(2423),n(2437),n(2441),n(2447),n(2459),n(2467),n(2473),n(2477),n(2503),n(2521),n(2531),n(2539),n(2543),n(2549),n(2551),n(2557),n(2579),n(2591),n(2593),n(2609),n(2617),n(2621),n(2633),n(2647),n(2657),n(2659),n(2663),n(2671),n(2677),n(2683),n(2687),n(2689),n(2693),n(2699),n(2707),n(2711),n(2713),n(2719),n(2729),n(2731),n(2741),n(2749),n(2753),n(2767),n(2777),n(2789),n(2791),n(2797),n(2801),n(2803),n(2819),n(2833),n(2837),n(2843),n(2851),n(2857),n(2861),n(2879),n(2887),n(2897),n(2903),n(2909),n(2917),n(2927),n(2939),n(2953),n(2957),n(2963),n(2969),n(2971),n(2999),n(3001),n(3011),n(3019),n(3023),n(3037),n(3041),n(3049),n(3061),n(3067),n(3079),n(3083),n(3089),n(3109),n(3119),n(3121),n(3137),n(3163),n(3167),n(3169),n(3181),n(3187),n(3191),n(3203),n(3209),n(3217),n(3221),n(3229),n(3251),n(3253),n(3257),n(3259),n(3271),n(3299),n(3301),n(3307),n(3313),n(3319),n(3323),n(3329),n(3331),n(3343),n(3347),n(3359),n(3361),n(3371),n(3373),n(3389),n(3391),n(3407),n(3413),n(3433),n(3449),n(3457),n(3461),n(3463),n(3467),n(3469),n(3491),n(3499),n(3511),n(3517),n(3527),n(3529),n(3533),n(3539),n(3541),n(3547),n(3557),n(3559),n(3571),n(3581),n(3583),n(3593),n(3607),n(3613),n(3617),n(3623),n(3631),n(3637),n(3643),n(3659),n(3671),n(3673),n(3677),n(3691),n(3697),n(3701),n(3709),n(3719),n(3727),n(3733),n(3739),n(3761),n(3767),n(3769),n(3779),n(3793),n(3797),n(3803),n(3821),n(3823),n(3833),n(3847),n(3851),n(3853),n(3863),n(3877),n(3881),n(3889),n(3907),n(3911),n(3917),n(3919),n(3923),n(3929),n(3931),n(3943),n(3947),n(3967),n(3989),n(4001),n(4003),n(4007),n(4013),n(4019),n(4021),n(4027),n(4049),n(4051),n(4057),n(4073),n(4079),n(4091),n(4093),n(4099),n(4111),n(4127),n(4129),n(4133),n(4139),n(4153),n(4157),n(4159),n(4177),n(4201),n(4211),n(4217),n(4219),n(4229),n(4231),n(4241),n(4243),n(4253),n(4259),n(4261),n(4271),n(4273),n(4283),n(4289),n(4297),n(4327),n(4337),n(4339),n(4349),n(4357),n(4363),n(4373),n(4391),n(4397),n(4409),n(4421),n(4423),n(4441),n(4447),n(4451),n(4457),n(4463),n(4481),n(4483),n(4493),n(4507),n(4513),n(4517),n(4519),n(4523),n(4547),n(4549),n(4561),n(4567),n(4583),n(4591),n(4597),n(4603),n(4621),n(4637),n(4639),n(4643),n(4649),n(4651),n(4657),n(4663),n(4673),n(4679),n(4691),n(4703),n(4721),n(4723),n(4729),n(4733),n(4751),n(4759),n(4783),n(4787),n(4789),n(4793),n(4799),n(4801),n(4813),n(4817),n(4831),n(4861),n(4871),n(4877),n(4889),n(4903),n(4909),n(4919),n(4931),n(4933),n(4937),n(4943),n(4951),n(4957),n(4967),n(4969),n(4973),n(4987),n(4993),n(4999),n(5003),n(5009),n(5011),n(5021),n(5023),n(5039),n(5051),n(5059),n(5077),n(5081),n(5087),n(5099),n(5101),n(5107),n(5113),n(5119),n(5147),n(5153),n(5167),n(5171),n(5179),n(5189),n(5197),n(5209),n(5227),n(5231),n(5233),n(5237),n(5261),n(5273),n(5279),n(5281),n(5297),n(5303),n(5309),n(5323),n(5333),n(5347),n(5351),n(5381),n(5387),n(5393),n(5399),n(5407),n(5413),n(5417),n(5419),n(5431),n(5437),n(5441),n(5443),n(5449),n(5471),n(5477),n(5479),n(5483),n(5501),n(5503),n(5507),n(5519),n(5521),n(5527),n(5531),n(5557),n(5563),n(5569),n(5573),n(5581),n(5591),n(5623),n(5639),n(5641),n(5647),n(5651),n(5653),n(5657),n(5659),n(5669),n(5683),n(5689),n(5693),n(5701),n(5711),n(5717),n(5737),n(5741),n(5743),n(5749),n(5779),n(5783),n(5791),n(5801),n(5807),n(5813),n(5821),n(5827),n(5839),n(5843),n(5849),n(5851),n(5857),n(5861),n(5867),n(5869),n(5879),n(5881),n(5897),n(5903),n(5923),n(5927),n(5939),n(5953),n(5981),n(5987),n(6007),n(6011),n(6029),n(6037),n(6043),n(6047),n(6053),n(6067),n(6073),n(6079),n(6089),n(6091),n(6101),n(6113),n(6121),n(6131),n(6133),n(6143),n(6151),n(6163),n(6173),n(6197),n(6199),n(6203),n(6211),n(6217),n(6221),n(6229),n(6247),n(6257),n(6263),n(6269),n(6271),n(6277),n(6287),n(6299),n(6301),n(6311),n(6317),n(6323),n(6329),n(6337),n(6343),n(6353),n(6359),n(6361),n(6367),n(6373),n(6379),n(6389),n(6397),n(6421),n(6427),n(6449),n(6451),n(6469),n(6473),n(6481),n(6491),n(6521),n(6529),n(6547),n(6551),n(6553),n(6563),n(6569),n(6571),n(6577),n(6581),n(6599),n(6607),n(6619),n(6637),n(6653),n(6659),n(6661),n(6673),n(6679),n(6689),n(6691),n(6701),n(6703),n(6709),n(6719),n(6733),n(6737),n(6761),n(6763),n(6779),n(6781),n(6791),n(6793),n(6803),n(6823),n(6827),n(6829),n(6833),n(6841),n(6857),n(6863),n(6869),n(6871),n(6883),n(6899),n(6907),n(6911),n(6917),n(6947),n(6949),n(6959),n(6961),n(6967),n(6971),n(6977),n(6983),n(6991),n(6997),n(7001),n(7013),n(7019),n(7027),n(7039),n(7043),n(7057),n(7069),n(7079),n(7103),n(7109),n(7121),n(7127),n(7129),n(7151),n(7159),n(7177),n(7187),n(7193),n(7207),n(7211),n(7213),n(7219),n(7229),n(7237),n(7243),n(7247),n(7253),n(7283),n(7297),n(7307),n(7309),n(7321),n(7331),n(7333),n(7349),n(7351),n(7369),n(7393),n(7411),n(7417),n(7433),n(7451),n(7457),n(7459),n(7477),n(7481),n(7487),n(7489),n(7499),n(7507),n(7517),n(7523),n(7529),n(7537),n(7541),n(7547),n(7549),n(7559),n(7561),n(7573),n(7577),n(7583),n(7589),n(7591),n(7603),n(7607),n(7621),n(7639),n(7643),n(7649),n(7669),n(7673),n(7681),n(7687),n(7691),n(7699),n(7703),n(7717),n(7723),n(7727),n(7741),n(7753),n(7757),n(7759),n(7789),n(7793),n(7817),n(7823),n(7829),n(7841),n(7853),n(7867),n(7873),n(7877),n(7879),n(7883),n(7901),n(7907),n(7919),n(7927),n(7933),n(7937),n(7949),n(7951),n(7963),n(7993),n(8009),n(8011),n(8017),n(8039),n(8053),n(8059),n(8069),n(8081),n(8087),n(8089),n(8093),n(8101),n(8111),n(8117),n(8123),n(8147),n(8161),n(8167),n(8171),n(8179),n(8191),n(8209),n(8219),n(8221),n(8231),n(8233),n(8237),n(8243),n(8263),n(8269),n(8273),n(8287),n(8291),n(8293),n(8297),n(8311),n(8317),n(8329),n(8353),n(8363),n(8369),n(8377),n(8387),n(8389),n(8419),n(8423),n(8429),n(8431),n(8443),n(8447),n(8461),n(8467),n(8501),n(8513),n(8521),n(8527),n(8537),n(8539),n(8543),n(8563),n(8573),n(8581),n(8597),n(8599),n(8609),n(8623),n(8627),n(8629),n(8641),n(8647),n(8663),n(8669),n(8677),n(8681),n(8689),n(8693),n(8699),n(8707),n(8713),n(8719),n(8731),n(8737),n(8741),n(8747),n(8753),n(8761),n(8779),n(8783),n(8803),n(8807),n(8819),n(8821),n(8831),n(8837),n(8839),n(8849),n(8861),n(8863),n(8867),n(8887),n(8893),n(8923),n(8929),n(8933),n(8941),n(8951),n(8963),n(8969),n(8971),n(8999),n(9001),n(9007),n(9011),n(9013),n(9029),n(9041),n(9043),n(9049),n(9059),n(9067),n(9091),n(9103),n(9109),n(9127),n(9133),n(9137),n(9151),n(9157),n(9161),n(9173),n(9181),n(9187),n(9199),n(9203),n(9209),n(9221),n(9227),n(9239),n(9241),n(9257),n(9277),n(9281),n(9283),n(9293),n(9311),n(9319),n(9323),n(9337),n(9341),n(9343),n(9349),n(9371),n(9377),n(9391),n(9397),n(9403),n(9413),n(9419),n(9421),n(9431),n(9433),n(9437),n(9439),n(9461),n(9463),n(9467),n(9473),n(9479),n(9491),n(9497),n(9511),n(9521),n(9533),n(9539),n(9547),n(9551),n(9587),n(9601),n(9613),n(9619),n(9623),n(9629),n(9631),n(9643),n(9649),n(9661),n(9677),n(9679),n(9689),n(9697),n(9719),n(9721),n(9733),n(9739),n(9743),n(9749),n(9767),n(9769),n(9781),n(9787),n(9791),n(9803),n(9811),n(9817),n(9829),n(9833),n(9839),n(9851),n(9857),n(9859),n(9871),n(9883),n(9887),n(9901),n(9907),n(9923),n(9929),n(9931),n(9941),n(9949),n(9967),n(9973),n(10007),n(10009),n(10037),n(10039),n(10061),n(10067),n(10069),n(10079),n(10091),n(10093),n(10099),n(10103),n(10111),n(10133),n(10139),n(10141),n(10151),n(10159),n(10163),n(10169),n(10177),n(10181),n(10193),n(10211),n(10223),n(10243),n(10247),n(10253),n(10259),n(10267),n(10271),n(10273),n(10289),n(10301),n(10303),n(10313),n(10321),n(10331),n(10333),n(10337),n(10343),n(10357),n(10369),n(10391),n(10399),n(10427),n(10429),n(10433),n(10453),n(10457),n(10459),n(10463),n(10477),n(10487),n(10499),n(10501),n(10513),n(10529),n(10531),n(10559),n(10567),n(10589),n(10597),n(10601),n(10607),n(10613),n(10627),n(10631),n(10639),n(10651),n(10657),n(10663),n(10667),n(10687),n(10691),n(10709),n(10711),n(10723),n(10729),n(10733),n(10739),n(10753),n(10771),n(10781),n(10789),n(10799),n(10831),n(10837),n(10847),n(10853),n(10859),n(10861),n(10867),n(10883),n(10889),n(10891),n(10903),n(10909),n(10937),n(10939),n(10949),n(10957),n(10973),n(10979),n(10987),n(10993),n(11003),n(11027),n(11047),n(11057),n(11059),n(11069),n(11071),n(11083),n(11087),n(11093),n(11113),n(11117),n(11119),n(11131),n(11149),n(11159),n(11161),n(11171),n(11173),n(11177),n(11197),n(11213),n(11239),n(11243),n(11251),n(11257),n(11261),n(11273),n(11279),n(11287),n(11299),n(11311),n(11317),n(11321),n(11329),n(11351),n(11353),n(11369),n(11383),n(11393),n(11399),n(11411),n(11423),n(11437),n(11443),n(11447),n(11467),n(11471),n(11483),n(11489),n(11491),n(11497),n(11503),n(11519),n(11527),n(11549),n(11551),n(11579),n(11587),n(11593),n(11597),n(11617),n(11621),n(11633),n(11657),n(11677),n(11681),n(11689),n(11699),n(11701),n(11717),n(11719),n(11731),n(11743),n(11777),n(11779),n(11783),n(11789),n(11801),n(11807),n(11813),n(11821),n(11827),n(11831),n(11833),n(11839),n(11863),n(11867),n(11887),n(11897),n(11903),n(11909),n(11923),n(11927),n(11933),n(11939),n(11941),n(11953),n(11959),n(11969),n(11971),n(11981),n(11987),n(12007),n(12011),n(12037),n(12041),n(12043),n(12049),n(12071),n(12073),n(12097),n(12101),n(12107),n(12109),n(12113),n(12119),n(12143),n(12149),n(12157),n(12161),n(12163),n(12197),n(12203),n(12211),n(12227),n(12239),n(12241),n(12251),n(12253),n(12263),n(12269),n(12277),n(12281),n(12289),n(12301),n(12323),n(12329),n(12343),n(12347),n(12373),n(12377),n(12379),n(12391),n(12401),n(12409),n(12413),n(12421),n(12433),n(12437),n(12451),n(12457),n(12473),n(12479),n(12487),n(12491),n(12497),n(12503),n(12511),n(12517),n(12527),n(12539),n(12541),n(12547),n(12553),n(12569),n(12577),n(12583),n(12589),n(12601),n(12611),n(12613),n(12619),n(12637),n(12641),n(12647),n(12653),n(12659),n(12671),n(12689),n(12697),n(12703),n(12713),n(12721),n(12739),n(12743),n(12757),n(12763),n(12781),n(12791),n(12799),n(12809),n(12821),n(12823),n(12829),n(12841),n(12853),n(12889),n(12893),n(12899),n(12907),n(12911),n(12917),n(12919),n(12923),n(12941),n(12953),n(12959),n(12967),n(12973),n(12979),n(12983),n(13001),n(13003),n(13007),n(13009),n(13033),n(13037),n(13043),n(13049),n(13063),n(13093),n(13099),n(13103),n(13109),n(13121),n(13127),n(13147),n(13151),n(13159),n(13163),n(13171),n(13177),n(13183),n(13187),n(13217),n(13219),n(13229),n(13241),n(13249),n(13259),n(13267),n(13291),n(13297),n(13309),n(13313),n(13327),n(13331),n(13337),n(13339),n(13367),n(13381),n(13397),n(13399),n(13411),n(13417),n(13421),n(13441),n(13451),n(13457),n(13463),n(13469),n(13477),n(13487),n(13499),n(13513),n(13523),n(13537),n(13553),n(13567),n(13577),n(13591),n(13597),n(13613),n(13619),n(13627),n(13633),n(13649),n(13669),n(13679),n(13681),n(13687),n(13691),n(13693),n(13697),n(13709),n(13711),n(13721),n(13723),n(13729),n(13751),n(13757),n(13759),n(13763),n(13781),n(13789),n(13799),n(13807),n(13829),n(13831),n(13841),n(13859),n(13873),n(13877),n(13879),n(13883),n(13901),n(13903),n(13907),n(13913),n(13921),n(13931),n(13933),n(13963),n(13967),n(13997),n(13999),n(14009),n(14011),n(14029),n(14033),n(14051),n(14057),n(14071),n(14081),n(14083),n(14087),n(14107),n(14143),n(14149),n(14153),n(14159),n(14173),n(14177),n(14197),n(14207),n(14221),n(14243),n(14249),n(14251),n(14281),n(14293),n(14303),n(14321),n(14323),n(14327),n(14341),n(14347),n(14369),n(14387),n(14389),n(14401),n(14407),n(14411),n(14419),n(14423),n(14431),n(14437),n(14447),n(14449),n(14461),n(14479),n(14489),n(14503),n(14519),n(14533),n(14537),n(14543),n(14549),n(14551),n(14557),n(14561),n(14563),n(14591),n(14593),n(14621),n(14627),n(14629),n(14633),n(14639),n(14653),n(14657),n(14669),n(14683),n(14699),n(14713),n(14717),n(14723),n(14731),n(14737),n(14741),n(14747),n(14753),n(14759),n(14767),n(14771),n(14779),n(14783),n(14797),n(14813),n(14821),n(14827),n(14831),n(14843),n(14851),n(14867),n(14869),n(14879),n(14887),n(14891),n(14897),n(14923),n(14929),n(14939),n(14947),n(14951),n(14957),n(14969),n(14983),n(15013),n(15017),n(15031),n(15053),n(15061),n(15073),n(15077),n(15083),n(15091),n(15101),n(15107),n(15121),n(15131),n(15137),n(15139),n(15149),n(15161),n(15173),n(15187),n(15193),n(15199),n(15217),n(15227),n(15233),n(15241),n(15259),n(15263),n(15269),n(15271),n(15277),n(15287),n(15289),n(15299),n(15307),n(15313),n(15319),n(15329),n(15331),n(15349),n(15359),n(15361),n(15373),n(15377),n(15383),n(15391),n(15401),n(15413),n(15427),n(15439),n(15443),n(15451),n(15461),n(15467),n(15473),n(15493),n(15497),n(15511),n(15527),n(15541),n(15551),n(15559),n(15569),n(15581),n(15583),n(15601),n(15607),n(15619),n(15629),n(15641),n(15643),n(15647),n(15649),n(15661),n(15667),n(15671),n(15679),n(15683),n(15727),n(15731),n(15733),n(15737),n(15739),n(15749),n(15761),n(15767),n(15773),n(15787),n(15791),n(15797),n(15803),n(15809),n(15817),n(15823),n(15859),n(15877),n(15881),n(15887),n(15889),n(15901),n(15907),n(15913),n(15919),n(15923),n(15937),n(15959),n(15971),n(15973),n(15991),n(16001),n(16007),n(16033),n(16057),n(16061),n(16063),n(16067),n(16069),n(16073),n(16087),n(16091),n(16097),n(16103),n(16111),n(16127),n(16139),n(16141),n(16183),n(16187),n(16189),n(16193),n(16217),n(16223),n(16229),n(16231),n(16249),n(16253),n(16267),n(16273),n(16301),n(16319),n(16333),n(16339),n(16349),n(16361),n(16363),n(16369),n(16381),n(16411),n(16417),n(16421),n(16427),n(16433),n(16447),n(16451),n(16453),n(16477),n(16481),n(16487),n(16493),n(16519),n(16529),n(16547),n(16553),n(16561),n(16567),n(16573),n(16603),n(16607),n(16619),n(16631),n(16633),n(16649),n(16651),n(16657),n(16661),n(16673),n(16691),n(16693),n(16699),n(16703),n(16729),n(16741),n(16747),n(16759),n(16763),n(16787),n(16811),n(16823),n(16829),n(16831),n(16843),n(16871),n(16879),n(16883),n(16889),n(16901),n(16903),n(16921),n(16927),n(16931),n(16937),n(16943),n(16963),n(16979),n(16981),n(16987),n(16993),n(17011),n(17021),n(17027),n(17029),n(17033),n(17041),n(17047),n(17053),n(17077),n(17093),n(17099),n(17107),n(17117),n(17123),n(17137),n(17159),n(17167),n(17183),n(17189),n(17191),n(17203),n(17207),n(17209),n(17231),n(17239),n(17257),n(17291),n(17293),n(17299),n(17317),n(17321),n(17327),n(17333),n(17341),n(17351),n(17359),n(17377),n(17383),n(17387),n(17389)]),bt.list}function pt(r,n,t){for(var e,i,u,l,s=J.Arithmetic,o=(s.num,s.O,s.I),m=s.II,c=s.sub(r,o),a=s.sub(c,o),f=c,h=0;e=s.div(f,m),i=s.mod(f,m),!s.equ(i,o);)h+=1,f=e;function d(n){var t,e=st(n,f,r);if(!s.equ(e,o)&&!s.equ(e,c)){for(t=1;t<h;t++){if(e=s.mod(s.mul(e,e),r),s.equ(e,o))return 1;if(s.equ(e,c))return}return 1}}if(null==n&&(n=5),qn(n)){for(u=0,l=n.length;u<l;u++)if(d(n[u]))return!1;if(null!=t)for(t=+t,u=0;u<t;u++)if(d(s.rnd(m,a)))return!1}else for(n=+n,u=0;u<n;u++)if(d(s.rnd(m,a)))return!1;return!0}function yt(n){var t,e,r,i=J.Arithmetic,u=i.O,l=i.I,s=(i.J,i.II),o=mt(n);if(i.equ(n,i.mul(o,o)))return!1;if(o=function(n){for(var t,e=J.Arithmetic,r=e.num,i=e.O,u=e.J,l=e.I,s=(e.II,r(4)),o=r(3),m=l,c=r(5);;){if(t=Nt(c,n),e.gt(t,l)&&!e.equ(t,n))return[i,i,i];if(e.equ(u,dt(c,n,t)))break;o=e.add(o,l),c=e.sub(e.mul(o,o),s)}return[c,o,m]}(n),i.equ(u,o[0]))return!1;if(l=(e=function(n,t,e){for(var r=J.Arithmetic,i=0,u=(t=t||r.digits(n,2)).length-1;0<=u&&"0"===t.charAt(u);)u--,i++;return e?[i,u<0?"0":t.slice(0,u+1)]:i}(i.add(n,l),null,!0))[1],e=e[0],l=(o=function(n,t,e,r,i){var u,l,s,o,m,c,a,f=J.Arithmetic,h=f.O,d=f.J,g=f.I,_=f.II,v=f.sub(f.mul(t,t),f.mul(e,4));if(f.equ(h,v))return null;if("0"===(i=i||f.digits(r,2)))return[h,_,e];if(u=g,l=t,m=e,c=i.length,f.equ(g,e))for(a=1;a<c;a++)u=f.mod(f.mul(u,l),n),l=f.mod(f.sub(f.mul(l,l),_),n),"1"===i.charAt(a)&&(s=u,o=l,u=f.add(f.mul(s,t),o),l=f.add(f.mul(o,t),f.mul(s,v)),f.equ(g,f.mod(u,_))&&(u=f.add(u,n)),f.equ(g,f.mod(l,_))&&(l=f.add(l,n)),u=f.div(u,_),l=f.div(l,_));else if(f.equ(g,t)&&f.equ(d,e))for(a=1;a<c;a++)u=f.mod(f.mul(u,l),n),f.equ(g,m)?l=f.mod(f.sub(f.mul(l,l),_),n):(l=f.mod(f.add(f.mul(l,l),_),n),m=g),"1"===i.charAt(a)&&(s=u,o=l,u=f.add(s,o),l=f.add(o,f.mul(s,v)),f.equ(g,f.mod(u,_))&&(u=f.add(u,n)),f.equ(g,f.mod(l,_))&&(l=f.add(l,n)),u=f.div(u,_),l=f.div(l,_),m=d);else for(a=1;a<c;a++)u=f.mod(f.mul(u,l),n),l=f.mod(f.sub(f.mul(l,l),f.mul(_,m)),n),m=f.mul(m,m),"1"===i.charAt(a)&&(s=u,o=l,u=f.add(f.mul(s,t),o),l=f.add(f.mul(o,t),f.mul(s,v)),f.equ(g,f.mod(u,_))&&(u=f.add(u,n)),f.equ(g,f.mod(l,_))&&(l=f.add(l,n)),u=f.div(u,_),l=f.div(l,_),m=f.mul(m,e)),m=f.mod(m,n);return[f.mod(u,n),f.mod(l,n),m]}(n,o[1],o[2],u,l))[0],t=o[1],i.equ(u,l)&&(i.equ(s,t)||i.equ(t,i.sub(n,s))))return!0;if(i.equ(u,t))return!0;for(r=1;r<e;r++)if(t=i.mod(i.sub(i.mul(t,t),s),n),i.equ(u,t))return!0;return!1}function xt(n,t){var e,r,i,u=J.Arithmetic,l=u.O,s=u.II,o=bt();if(u.lt(n,o[0]))return!1;for(e=0,r=Q.min(o.length,100);e<r;e++){if(i=o[e],u.equ(n,i))return!0;if(u.equ(l,u.mod(n,i)))return!1}return!!pt(n,[s],t||null)&&yt(n)}function qt(n){var t,e,r,i=J.Arithmetic,u=i.O,l=bt();if(i.lt(n,l[0]))return!1;for(t=0,e=Q.min(l.length,50);t<e;t++){if(r=l[t],i.equ(n,r))return!0;if(i.equ(u,i.mod(n,r)))return!1}return pt(n,7)}function At(n){var t,e,r,i,u,l,s,o,m=J.Arithmetic,c=m.num,a=m.O,f=(m.I,m.II);if(At.wheel||(e=c(4),r=c(6),i=c(8),u=c(10),At.wheel={base:[f,c(3),c(5),c(7)],next:c(11),next2:c(121),inc:[f,e,f,e,r,f,r,e,f,e,r,r,f,r,e,f,r,e,r,i,e,f,e,f,e,i,r,e,r,f,e,r,f,r,r,e,f,e,r,f,r,e,f,e,f,u,f,u]}),r=At.wheel.base[1],e=At.wheel.base[2],u=At.wheel.base[3],m.lt(n,f))return!1;if(m.equ(n,f))return!0;if(m.equ(n,r))return!0;if(m.equ(n,e))return!0;if(m.equ(n,u))return!0;if(m.equ(a,m.mod(n,f))||m.equ(a,m.mod(n,r))||m.equ(a,m.mod(n,e))||m.equ(a,m.mod(n,u)))return!1;if(m.lt(n,At.wheel.next2))return!0;for(l=At.wheel.inc,s=0,o=At.wheel.next,t=mt(n);m.lte(o,t);){if(m.equ(a,m.mod(n,o)))return!1;o=m.add(o,l[s++]),s===l.length&&(s=0)}return!0}function It(n){var t=J.Arithmetic,e=t.num,r=t.II,i=t.digits(n).length;return i<=6?At(n):i<=20?t.lt(n,e(1373653))?pt(n,[r,e(3)]):t.lt(n,e("25326001"))?pt(n,[r,e(3),e(5)]):t.lt(n,e("25000000000"))?!t.equ(n,e("3215031751"))&&pt(n,[r,e(3),e(5),e(7)]):t.lt(n,e("2152302898747"))?pt(n,[r,e(3),e(5),e(7),e(11)]):t.lt(n,e("3474749660383"))?pt(n,[r,e(3),e(5),e(7),e(11),e(13)]):t.lt(n,e("341550071728321"))?pt(n,[r,e(3),e(5),e(7),e(11),e(13),e(17)]):xt(n,7):xt(n,7)}function Ot(t,n,e,r,i,u){var l,s,o,m,c,a,f,h=J.Arithmetic,d=h.O,g=h.I,_=h.II;if(h.lte(t,5))return h.equ(t,4)?_:t;for(null==n&&(n=_),null==e&&(e=g),null==r&&(r=5),a=h.sub(t,g),f=h.sub(t,3),r=+(r||0),i=i||null,u=u||null,l=n,o=0;o<=r;o++){for(s=l,m=0,Sn(u)||(u=function(n){return h.mod(h.add(h.mod(h.mul(n,n),t),e),t)});!(null!=i&&i<m);)if(m+=1,s=u(s),l=u(u(l)),c=Nt(h.sub(s,l),t),!h.equ(g,c)){if(h.equ(t,c))break;return c}l=h.rnd(d,a),e=h.rnd(g,f),u=null}return null}function wt(n){var t,e=J.Arithmetic,r=null;return Nn(n,Z)&&(r=n[X],n=n.num),t=e.digits(n).length<=20?function(n,t){var e,r,i,u,l,s,o,m,c,a,f=J.Arithmetic,h=f.num,d=f.O,g=f.I,_=f.II,v=bt();for(v.length||(v=[_,h(3)]),f.equ(v[v.length-1],_)&&v.push(h(3)),u=e=null,s=n,o=l=0,m=v.length;o<m;o++){if(c=v[o],f.equ(s,c))return[[c,g]];if(a=f.mul(c,c),f.gt(a,n)||null!=t&&f.gt(a,t))break;if(f.equ(d,f.mod(n,c))){for(i=g,n=f.div(n,c);f.equ(d,f.mod(n,c));)i=f.add(g,i),n=f.div(n,c);((r=new b([c,i])).l=u)&&(u.r=r),u=r,l++,e=e||u}}if(m<=o)for(c=f.add(c,_),a=f.mul(c,c);f.lte(a,n)&&(null==t||f.lte(a,t));){for(i=d;f.equ(d,f.mod(n,c));)i=f.add(g,i),n=f.div(n,c);f.lt(d,i)&&(((r=new b([c,i])).l=u)&&(u.r=r),u=r,l++,e=e||u),c=f.add(c,_),a=f.mul(c,c)}return null==t&&f.gt(n,g)&&(((r=new b([n,g])).l=u)&&(u.r=r),u=r,l++,e=e||u),h=Dn(l,function(){var n=e,t=n.v;return e=e.r,n.dispose(),e&&(e.l=null),t}),null==t?h:[h,n]}(n):(null==(t=Ot(n,e.II,e.I,5,100,null))&&(t=function(n,t,e,r){var i,u,l,s,o,m,c,a=J.Arithmetic,f=a.num,h=(a.O,a.I),d=a.II,g=bt(),_=g.length;if(null==r&&(r=0),null==e&&(e=d),null==t&&(t=f(10)),r=+r,a.lt(n,4)||a.lt(t,3))return null;for(m=a.sub(n,d),i=0;i<=r;i++){for(u=e,c=0;c<_&&(l=g[c],!a.gt(l,t));c++)s=vt(t,l),u=st(u,a.pow(l,s),n);if(o=Nt(a.sub(u,h),n),a.gt(o,h)&&a.lt(o,n))return o;e=a.rnd(d,m)}return null}(n,e.num(10),e.II,5)),null==t?[[n,e.I]]:function(n,t){for(var e=J.Arithmetic,r=0,i=0,u=n.length,l=t.length,s=0,o=new Array(u+l);r<u&&i<l;)e.equ(n[r][0],t[i][0])?(s&&e.equ(o[s-1][0],n[r][0])?o[s-1][1]=e.add(o[s-1][1],e.add(n[r][1],t[i][1])):o[s++]=[n[r][0],e.add(n[r][1],t[i][1])],r++,i++):e.lt(n[r][0],t[i][0])?(s&&e.equ(o[s-1][0],n[r][0])?o[s-1][1]=e.add(o[s-1][1],n[r][1]):o[s++]=n[r],r++):(s&&e.equ(o[s-1][0],t[i][0])?o[s-1][1]=e.add(o[s-1][1],t[i][1]):o[s++]=t[i],i++);for(;r<u;)s&&e.equ(o[s-1][0],n[r][0])?o[s-1][1]=e.add(o[s-1][1],n[r][1]):o[s++]=n[r],r++;for(;i<l;)s&&e.equ(o[s-1][0],t[i][0])?o[s-1][1]=e.add(o[s-1][1],t[i][1]):o[s++]=t[i],i++;return o.length>s&&(o.length=s),o}(wt(t),wt(e.div(n,t)))),r?t.map(function(n){return[new r(n[0]),new r(n[1])]}):t}function St(n,t){return n===t}function Ct(n,t,e){var r,i,u,l;for(e=e||St,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 Nt(){var n,t,e,r,i=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,u=i.length,l=J.Arithmetic,s=(l.num,l.O),o=l.I;if(0===u)return s;for(r=0;r<u&&l.equ(s,n=i[r++]););for(n=l.abs(n);r<u;){if(l.equ(n,o))return o;for(;r<u&&l.equ(s,t=i[r++]););if(t=l.abs(t),l.equ(t,o))return o;if(!l.equ(t,n)){if(l.equ(t,s))break;for(l.lt(n,t)&&(e=t,t=n,n=e);!l.equ(s,t);)e=t,t=l.mod(n,e),n=e}}return n}function Rt(n,t){var e=J.Arithmetic,r=(e.O,e.abs(n)),i=e.abs(t);return e.equ(r,i)?Gt(n)===Gt(t)?r:e.neg(r):e.mul(e.div(n,Nt(n,t)),t)}function Zt(n){var t,e,r=arguments.length&&(qn(n)||An(n))?n:arguments,i=r.length,u=J.Arithmetic,l=u.O;if(i<=1)return 1===i?r[0]:l;if(u.equ(l,r[0])||u.equ(l,r[1]))return l;for(e=Rt(r[0],r[1]),t=2;t<i;t++){if(u.equ(l,r[t]))return l;e=Rt(e,r[t])}return e}function Mt(n){var t,e,r,i,u=arguments.length&&(qn(n)||An(n))?n:arguments,l=u.length,s=J.Arithmetic,o=s.O,m=s.I,n=s.J,c=m,a=o,f=o,h=m,d=m,g=m;if(0!==l){if(t=u[0],s.gt(o,t)&&(t=s.abs(t),d=n),1===l)return[t,d];if(i=2===l?[u[1],m]:Mt(G.call(u,1)),e=i[0],s.gt(o,e)&&(e=s.abs(e),g=n),s.equ(o,t))return Dn(i.length+1,function(n){return 0===n?e:1===n?d:s.mul(g,i[n-1])});if(s.equ(o,e))return Dn(i.length+1,function(n){return 0===n?t:1===n?d:s.mul(g,i[n-1])});for(;;){if(r=s.div(t,e),t=s.mod(t,e),c=s.sub(c,s.mul(r,f)),a=s.sub(a,s.mul(r,h)),s.equ(o,t))return f=s.mul(f,d),h=s.mul(h,g),Dn(i.length+1,function(n){return 0===n?e:1===n?f:s.mul(h,i[n-1])});if(r=s.div(e,t),e=s.mod(e,t),f=s.sub(f,s.mul(r,c)),h=s.sub(h,s.mul(r,a)),s.equ(o,e))return c=s.mul(c,d),a=s.mul(a,g),Dn(i.length+1,function(n){return 0===n?t:1===n?c:s.mul(a,i[n-1])})}}}function Et(){var n,t,e,r,i,u=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,l=u.length,s=J.Arithmetic.O;if(0===l)return v.Zero();for(i=0;i<l&&(n=u[i++]).equ(s););for(;i<l;){for(;i<l&&(t=u[i++]).equ(s););if(!t.equ(n)){if(t.equ(s))break;for(t.norm().gt(n.norm())&&(e=t,t=n,n=e);!t.equ(s);)r=n.mod(t),n=t,t=r}}return n.real().abs().lt(n.imag().abs())&&(n=n.mul(v.Img())),n.real().lt(s)&&(n=n.neg()),n}function Dt(n,t){var e=J.Arithmetic.O,r=Et(n,t);return r.equ(e)?r:n.div(r).mul(t)}function Tt(){var n,t,e,r,i,u,l,s=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,o=s.length,m=J.Arithmetic,c=I,a=!0,f=m.O,h=m.I;m.J;if(0===o)return c.Zero();for(c=s[0][X],i=0;i<o;i++)if(!s[i].isConst()){a=!1;break}if(a)return c(s[0].ring.gcd(Dn(s.length,function(n){return s[n].cc()})),s[0].symbol,s[0].ring);if(Cn(s[0].ring.NumberClass,Z))return n=s[0],1==o?n.monic():(l=n.ring.associatedField(),u=c(n,n.symbol,l),m=c(2===o?s[1]:Tt(G.call(s,1)),n.symbol,l),c(Tt(u,m).primitive().mul(l.gcd(u.content(),m.content())),n.symbol,n.ring));for(i=0;i<o&&(n=s[i++]).equ(f););for(n.lc().lt(f)&&(n=n.neg());i<o;){if(n.equ(h))return c.One(n.symbol,n.ring);for(;i<o&&(t=s[i++]).equ(f););if(t.lc().lt(f)&&(t=t.neg()),t.equ(h))return c.One(n.symbol,n.ring);if(!t.equ(n)){if(t.equ(f))break;for(c.Term.cmp(n.ltm(),t.ltm(),!0)<0&&(e=t,t=n,n=e);!t.equ(f);)r=n.mod(t),n=t,t=r}}return n=n.monic()}function Pt(){var n,t,e,r,i,u,l,s,o,m,c,a,f,h,d,g=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,_=g.length,v=J.Arithmetic,b=I,p=!0,y=v.O;v.I;if(0!==_){for(r=g[0],b=r[X],n=0;n<_;n++)if(!g[n].isConst()){p=!1;break}if(p)return r.ring.xgcd(Dn(g.length,function(n){return g[n].cc()})).map(function(n){return b(n,r.symbol,r.ring)});if(Cn(r.ring.NumberClass,Z))return d=r.ring.associatedField(),t=d.One(),e=t,1==_?((m=r.lc()).divides(t)?(r=r.monic(),m.equ(r.lc())||(t=t.mul(r.lc()).div(m))):m.lt(y)&&(r=r.neg(),t=t.neg()),[r,b(t,r.symbol,d)]):(a=2===_?[g[1],b.One(r.symbol,d)]:Pt(G.call(g,1)),i=a[0],h=b(r,r.symbol,d),v=b(i,r.symbol,d),f=Pt(h,v),v=d.gcd(h.content(),v.content()),f[0]=f[0].primitive().mul(v),f[1]=f[1].mul(v),f[2]=f[2].mul(v),Dn(a.length+1,function(n){return 0===n?b(f[0],r.symbol,r.ring):1===n?f[1]:a[n-1].mul(f[2])}));if(t=r.ring.One(),e=t,1===_)return(m=r.lc()).divides(t)?(r=r.monic(),m.equ(r.lc())||(t=t.mul(r.lc()).div(m))):m.lt(y)&&(r=r.neg(),t=t.neg()),[r,b(t,r.symbol,r.ring)];if(a=2===_?[g[1],b.One(r.symbol,r.ring)]:Pt(G.call(g,1)),i=a[0],r.equ(y))return(m=i.lc()).divides(t)&&m.divides(e)?(i=i.monic(),m.equ(i.lc())||(t=t.mul(i.lc()).div(m),e=e.mul(i.lc()).div(m))):m.lt(y)&&(i=i.neg(),t=t.neg(),e=e.neg()),Dn(a.length+1,function(n){return 0===n?i:1===n?b(t,r.symbol,r.ring):a[n-1].mul(e)});if(i.equ(y))return(m=r.lc()).divides(t)&&m.divides(e)?(r=r.monic(),m.equ(r.lc())||(t=t.mul(r.lc()).div(m),e=e.mul(r.lc()).div(m))):m.lt(y)&&(r=r.neg(),t=t.neg(),e=e.neg()),Dn(a.length+1,function(n){return 0===n?r:1===n?b(t,r.symbol,r.ring):a[n-1].mul(e)});for(u=b.One(r.symbol,r.ring),l=b.Zero(r.symbol,r.ring),s=I.Zero(r.symbol,r.ring),o=I.One(r.symbol,r.ring);;){if(r=(c=r.divmod(i))[1],u=u.sub(c[0].mul(s)),l=l.sub(c[0].mul(o)),r.equ(y))return(m=i.lc()).divides(t)&&m.divides(e)?(i=i.monic(),m.equ(i.lc())||(t=t.mul(i.lc()).div(m),e=e.mul(i.lc()).div(m))):m.lt(y)&&(i=i.neg(),t=t.neg(),e=e.neg()),s=s.mul(t),o=o.mul(e),Dn(a.length+1,function(n){return 0===n?i:1===n?s:a[n-1].mul(o)});if(i=(c=i.divmod(r))[1],s=s.sub(c[0].mul(u)),o=o.sub(c[0].mul(l)),i.equ(y))return(m=r.lc()).divides(t)&&m.divides(e)?(r=r.monic(),m.equ(r.lc())||(t=t.mul(r.lc()).div(m),e=e.mul(r.lc()).div(m))):m.lt(y)&&(r=r.neg(),t=t.neg(),e=e.neg()),u=u.mul(t),l=l.mul(e),Dn(a.length+1,function(n){return 0===n?r:1===n?u:a[n-1].mul(l)})}}}function kt(n,t){var e=J.Arithmetic.O,r=Tt(n,t);return r.equ(e)?r:n.div(r).mul(t)}function $t(){var n,t,e=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,r=e.length,i=J.Arithmetic.O,u=I;if(r<=1)return 1===r?e[0]:u.Zero();if(u=e[0][X],e[0].equ(i)||e[1].equ(i))return u.Zero(e[0].symbol,e[0].ring);for(t=kt(e[0],e[1]),n=2;n<r;n++){if(e[n].equ(i))return u.Zero(e[0].symbol,e[0].ring);t=kt(t,e[n])}return t}function Lt(i,n){var t,u,l,s,o,r,m=J.Arithmetic,c=m.O,a=m.I,e=null,f=null,h=null,d=0,g=0,_=null;if(Nn(i,Z)&&(_=i[X],i=i.num),i=m.abs(i),!0===n)return m.gte(i,1e4)?(r=wt(i),L(r.map(function(n){return m.val(n[1])+1})).mapTo(function(n){n=n.reduce(function(n,t,e){return 0===t?n:m.mul(n,m.pow(r[e][0],t))},a);return _?new _(n):n})):(u=mt(i),l=a,o=null,D(function(n,t,e,r){if(t<0)return null;if(r)return l=a,m.equ(a,i)||(o=i),_?new _(a):a;if(o)return n=o,o=null,_?new _(n):n;for(l=m.add(l,a);m.lte(l,u);){if(m.equ(c,m.mod(i,l)))return s=m.div(i,l),m.equ(s,l)||(o=s),_?new _(l):l;l=m.add(l,a)}return null}));for(u=mt(i),l=a;m.lte(l,u);l=m.add(l,a))m.equ(c,m.mod(i,l))&&(s=m.div(i,l),m.equ(s,l)?(t=new b(l,h,null),d++,h&&(h.r=t),h=t):(t=new b(l,h,null),d++,h&&(h.r=t),h=t,t=new b(s,null,f),g++,f&&(f.l=t),f=t),e=e||h);return h&&(h.r=f)&&(f.l=h),f=h=null,Dn(d+g,function(){var n=e,t=n.v;return e=n.r,n.dispose(),e&&(e.l=null),_?new _(t):t})}function jt(n){for(var t=J.Arithmetic,e=(t.num,t.O),r=t.I,i=(t.II,wt(n)),u=i.length,l=0;l<u;l++)if(t.lt(r,i[l][1]))return e;return 1&u?r:t.J}function Ut(n,t,e){for(var r=(e=e||J.DefaultArithmetic).O,i=Q.min(n.length,t.length),u=0;u<i;u++)r=Nn(r,_)?Nn(n[u],_)?r.add(n[u].mul(t[u])):Nn(t[u],_)?r.add(t[u].mul(n[u])):r.add(e.mul(n[u],t[u])):Nn(n[u],_)?n[u].mul(t[u]).add(r):Nn(t[u],_)?t[u].mul(n[u]).add(r):e.add(r,e.mul(n[u],t[u]));return r}function Jt(n,t){var e,r,i=t.length;if(!i)return-1;for(r=Nn(n,_)?function(n,t){return n.equ(t)}:function(n,t){return n===t},e=0;e<i;e++)if(r(n,t[e]))return e;return-1}function Qt(n,t,e){var r,i=J.Arithmetic,u=i.O,l=i.I,s=Nt(n);return i.equ(u,i.mod(t,s))?(i.equ(l,s)||(n=[i.div(n[0],s),i.div(n[1],s)],t=i.div(t,s)),r=i.equ(t,u)?[u,u]:(r=Mt(n),[i.mul(t,r[1]),i.mul(t,r[2])]),i.gt(u,n[1])&&(n[0]=i.neg(n[0]),n[1]=i.neg(n[1])),n=[n[1],i.neg(n[0])],[N(r[0],C(S(e),n[0])),N(r[1],C(S(e),n[1]))]):null}function Ft(e,r,n,t){var i,u,l,s,o,m,c,a,f,h,d,g,_,v,b,p,y,x,q=J.Arithmetic,A=q.O,I=(q.I,e.length),O=[],w=On(n)&&n.length?n:"i";if(!I)return null;if(i=(e=e.filter(function(n,t){n=!q.equ(A,n);return n&&O.push(t),n})).length,x=[],0===i)s=0,p=q.equ(A,r)?Dn(I,function(n){var t=w+"_"+ ++s;return x.push(t),N(C(S(t)))}):null;else if(1===i)s=0,p=q.equ(A,q.mod(r,e[0]))?Dn(I,function(n){var t;return 1<I&&n!==O[0]&&(t=w+"_"+ ++s,x.push(t)),n===O[0]?N(q.div(r,e[0])):N(C(S(t)))}):null;else if(2===i)_=Qt(e,r,w+"_1"),s=l=0,_&&x.push(w+"_1"),p=null==_?null:Dn(I,function(n){return l<O.length&&n===O[l]?_[++l-1]:(n=w+"_"+(O.length+s++),x.push(n),N(C(S(n))))});else{for(g=[Nt(e[i-2],e[i-1])],e[i-2]=q.div(e[i-2],g[0]),e[i-1]=q.div(e[i-1],g[0]),o=i-3;0<o;o--)u=Nt(g[0],e[o]),g[0]=q.div(g[0],u),e[o]=q.div(e[o],u),g.unshift(u);for(g.push(e[i-1]),p=[],y=Dn(i,function(n){return w+"_"+(n+1)}),r=N(r),o=0,f=g.length;o<f;o++){for(v=[],b=[],m=0,c=(h=r.symbols()).length;m<c;m++){if(a=r.terms[h[m]].c().real().num,d="1"===h[m]?(l="1",y[0]):(l=h[m],y[y.indexOf(l)+1]),null==(_=Qt([e[o],g[o]],a,d)))return null;"1"!==l&&(_[0]=N(C(S(l),_[0].c()),_[0].terms[d]),_[1]=N(C(S(l),_[1].c()),_[1].terms[d])),-1===x.indexOf(d)&&x.push(d),v.push(_[0]),b.push(_[1])}p.push(N(v)),r=N(b)}p.push(r),s=l=0,p=Dn(I,function(n){return l<O.length&&n===O[l]?p[++l-1]:(n=w+"_"+(O.length+s++),x.push(n),N(C(S(n))))})}return p=null==p?null:!1===n?p.map(function(n){return n.c().real().num}):p,x.symbol=w,null==p?null:!0===t?[p,x]:p}function Xt(t,n,e,r){var i,u,l,s,o,m,c,a,f,h,d,g,_=M.Z(),v=_.Zero(),b=_.One(),p=null,y=On(e)&&e.length?e:"i";if(Nn(t,E)&&Cn(t.ring.NumberClass,Z)||(t=E(_,t)),!(i=t.nr))return null;if(!(u=t.nc))return null;for(Nn(n,E)&&(n=n.col(0)),i>(n=_.cast(n)).length&&(n=n.concat(Dn(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),a=0;a<u;a++)if(o<=a)g[a-o]=y+"_"+(a-o+1),d[a]=N(C(S(g[a-o]),b));else{for(h=v,f=0;f<a;f++)h=h.add(m.val[a][f].mul(d[f].c().real().num));if(d[a]=n[a].sub(h),m.val[a][a].equ(v)){if(!d[a].equ(v))return null;d[a]=N(C(S(y+"_"+(a+1)),b))}else{if(!m.val[a][a].divides(d[a]))return null;d[a]=N(d[a].div(m.val[a][a]))}}for(p=Dn(u,function(t){return N(Dn(u,function(n){return d[n].mul(c.val[t][n])}))}),a=u;a<i;a++)if(!N(p.map(function(n){return n.mul(t.val[a][f])})).equ(n[a]))return null;return p=null==p?null:!1===e?p.map(function(n){return n.c().real().num}):p,g.symbol=y,null==p?null:!0===r?[p,g]:p}function Gt(n){var t=J.Arithmetic,e=t.O;return Nn(n,_)?n.equ(e)?0:n.lt(e)?-1:1:t.equ(e,n)?0:t.gt(e,n)?-1:1}function zt(n,t,e){var r,i,u=J.Arithmetic,l=u.add,s=u.O,o=u.I,u=s,s=String(n)+","+String(t)+","+String(null==e?null:t-e);if(null==zt.mem[s]){if(null==e){for(r=o,i=0;i<t;i++)r=l(r,Vt(n-i-1));u=l(u,r),zt.mem[s]=u}else if(t===e+1)u=l(u,o),zt.mem[s]=u;else if(e+1<t){for(r=o,i=e+1;i<t;i++)r=l(r,Vt(n-i-1));u=l(u,r),zt.mem[s]=u}}else u=zt.mem[s];return u}function Wt(n,t){var e=J.Arithmetic;return t<n&&0<=t?e.shl(e.I,t):e.O}function Vt(n){if(Nn(n,Z))return new n[X](Vt(n.num));if(Nn(n,p))return new n[X](Vt(n.num),Vt(n.den));var t=J.Arithmetic;return t.shl(t.I,t.num(n))}function Bt(n,t){var e=J.Arithmetic,r=e.num;return t=Nn(t,Z)?t.num:r(t),Nn(n,Z)?new n[X](Bt(n.num,t)):Nn(n,p)?new n[X](Bt(n.num,t),Bt(n.den,t)):e.pow(r(n),t)}function Ht(t){var n,e,r,a=J.Arithmetic,f=a.O,h=a.I,d=a.II,g=a.num(3),i=function(t,n){var e,r,i,u,l,s,o,m,c;if(a.lt(t,4))return[h,h,h,g][a.val(t)];for(e=Kn(n,a.add(h,mt(t)),-1,null,null,a.lt),r=Kn(n,a.add(h,a.div(t,g)),-1,null,null,a.lt),i=Kn(n,a.add(h,a.div(t,d)),-1,null,null,a.lt),u=Kn(n,a.add(h,t),-1,null,null,a.lt),l=n.slice(i,u).concat(n.slice(e,r).filter(function(n){return a.equ(h,a.mod(a.div(t,n),d))})),c=1;c<e;c++){for(s=n[c],o=h,m=t;m=a.div(m,s),!a.equ(f,m);)a.equ(f,a.mod(m,d))||(o=a.mul(o,s));a.gt(o,h)&&l.push(o)}return function n(t,e,r){var i=J.Arithmetic;if(r<e)return i.I;if(e===r)return t[e];var u=e+r>>>1;return i.mul(n(t,e,u),n(t,1+u,r))}(l,0,l.length-1)},u=function n(t,e){if(a.lt(t,d))return h;var r=n(a.div(t,d),e);return a.mul(a.mul(r,r),i(t,e))};return a.lt(t,d)?h:(n=a.sub(t,a.digits(t,2).split("").reduce(function(n,t){return a.add(n,"1"===t?h:f)},f)),e=(r=$()).get(function(n){return a.lte(n,t)}),r.dispose(),a.mul(u(t,e),Vt(n)))}function Kt(e,n){var t,r,i,u=J.Arithmetic,l=u.O,s=u.I,o=u.J,m=u.II,c=u.num,a=u.val,f=u.add,h=u.sub,d=u.div,g=u.mul,_=u.mod,v=l,b=J.Options.MAXMEM;if(Nn(e,Z))return new e[X](Kt(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][a(e)]);if(u.gte(e,100))return Ht(e);t=String(e),null==Kt.mem1[t]?(v=g(Kt(h(e,s)),e),u.lt(e,b)&&(Kt.mem1[t]=v)):v=Kt.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][a(h(e,m))]);if(t="!"+String(e),null==Kt.mem2[t]){if(u.gt(e,1e4))for(i=s,r=v=l;u.lte(r,e);r=f(r,s))v=f(v,g(i,g(Kt(e,r),Kt(h(e,r))))),i=u.neg(i);else v=f(u.equ(l,_(e,m))?s:o,g(Kt(h(e,s),!1),e));u.lt(e,b)&&(Kt.mem2[t]=v)}else v=Kt.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][a(e)]);t="I"+String(e),null==Kt.mem2[t]?(v=f(Kt(h(e,s),!0),g(Kt(h(e,m),!0),h(e,s))),u.lt(e,b)&&(Kt.mem2[t]=v)):v=Kt.mem2[t]}else if(qn(n)){if(!n.length)return u.lt(e,l)?l:Kt(e);if(u.lt(e,l))return l;if(qn(n[0])){if(!(n=n[0]).length)return u.lt(e,l)?l:Kt(e);if(1===n.length)return Kt(e,n[0]);if(v=En(function(n,t){return f(n,t)},l,n),u.equ(v,l))return e;if(u.gt(v,e))return l;if(t=String(e)+"@"+Wn(n.map(String),1,!0).join(",")+"@",null==Kt.mem3[t]){for(r=h(v,s),v=s;u.gte(r,l);)v=g(v,h(e,r)),r=h(r,s);v=En(function(n,t){return d(n,Kt(t))},v,n),u.lt(e,b)&&(Kt.mem3[t]=v)}else v=Kt.mem3[t]}else t=String(e)+"@"+Wn(n.map(String),1,!0).join(","),null==Kt.mem3[t]?(v=En(function(n,t){return d(n,Kt(t))},Kt(e),n),u.lt(e,b)&&(Kt.mem3[t]=v)):v=Kt.mem3[t]}else if(u.isNumber(n)||Nn(n,Z))if(n=Nn(n,Z)?n.num:c(n),u.lt(n,l)){if(u.lte(e,u.neg(n)))return u.equ(e,u.neg(n))?Kt(e):l;if(t=String(e)+"@"+String(n),null==Kt.mem3[t]){if(r=f(e,n),u.gt(h(e,r),500))v=d(Kt(e),Kt(r));else for(v=r=f(r,s);u.lt(r,e);)v=g(v,r=f(r,s));u.lt(e,b)&&(Kt.mem3[t]=v)}else v=Kt.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==Kt.mem3[t]){if(u.lte(e,20))v=f(Kt(h(e,s),h(n,s)),Kt(h(e,s),n));else if(u.isDefault())v=Q.round(En(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(Kt(e),g(Kt(n),Kt(r)));else{for(v=r=f(r,s);u.lt(r,e);)v=g(v,r=f(r,s));v=d(v,Kt(n))}u.lt(e,b)&&(Kt.mem3[t]=v)}else v=Kt.mem3[t]}return v}function Yt(n,t){var e,r,i,u,l=J.Arithmetic,s=l.O,o=l.I,m=(l.J,l.num),c=l.add,a=l.sub,f=l.mul,h=J.Options.MAXMEM;if(Nn(n,Z))return new n[X](Yt(n.num,t));if(n=m(n),t=Nn(t,Z)?t.num:m(t),l.lt(n,s)||l.lt(t,s)||l.gt(t,n))return s;if(l.equ(t,s))return Kt(n);if(l.equ(t,n))return Kt(n,!1);if(m=String(n)+","+String(t),null==Yt.mem[m]){if(e=s,u=a(n,t),l.lt(u,t))for(r=s;l.lte(r,u);r=c(r,o))e=c(e,f(Kt(u,r),Kt(c(t,r),!1)));else for(i=o,r=s;l.lte(r,t);r=c(r,o))e=c(e,f(i,f(Kt(t,r),Kt(a(n,r))))),i=l.neg(i);l.lt(n,h)&&(Yt.mem[m]=e)}else e=Yt.mem[m];return e}function ne(n,t,e,r,i){for(var u=J.Arithmetic,l=u.O,s=0;s<t;s++)e===s||0<=i[s]&&i[s]<e||(l=u.add(l,Yt(n-e-1,r+(e<t&&s<e))));return l}function te(n,t,e){var r,i=J.Arithmetic,u=i.O,l=i.I,s=i.add,o=i.sub,m=i.mul,c=u,a=J.Options.MAXMEM;if(Nn(n,Z))return new n[X](te(n.num,Nn(t,Z)?t.num:t,e));if(Nn(t,Z)&&(t=t.num),n=i.num(n),t=i.num(t),e=+e,i.lt(n,u)||i.lt(t,u))return u;if(2===e){if(i.equ(n,t)||i.equ(t,l)&&i.lt(n,u))return l;if(i.equ(n,u)||i.equ(t,u))return u;r=String(n)+","+String(t),null==te.mem2[r]?(c=s(te(o(n,l),o(t,l),2),m(te(o(n,l),t,2),t)),i.lt(n,a)&&(te.mem2[r]=c)):c=te.mem2[r]}else if(-1===e){if(i.gt(t,n)||i.equ(t,u)&&i.lt(n,u))return u;if(i.equ(n,t))return l;r=String(n)+","+String(t)+"-",null==te.mem1[r]?(c=s(te(o(n,l),o(t,l),-1),m(te(o(n,l),t,-1),o(l,n))),i.lt(n,a)&&(te.mem1[r]=c)):c=te.mem1[r]}else{if(i.gt(t,n)||i.equ(t,u)&&i.lt(n,u))return u;if(i.equ(n,t))return l;if(i.equ(t,l))return Kt(o(n,l));c=i.equ(u,i.mod(o(n,t),i.II))?te(n,t,-1):i.neg(te(n,t,-1))}return c}function ee(n,t,e,r){var i,u,l=J.Arithmetic,s=l.O,o=l.I,m=(l.II,l.add),c=l.sub,a=l.mul,f=s;if(l.lt(n,s)||l.lte(t,s)||l.lte(e,s)||l.gt(e,r)||l.gt(a(t,e),n)||l.lt(a(t,r),n))return f;if(l.gt(e,o)&&(n=c(n,a(t,c(e,o))),r=m(c(r,e),o),e=o),l.equ(t,o))return l.lte(e,n)&&l.lte(n,r)?o:f;if(l.equ(n,t))return l.lte(e,o)&&l.gte(r,o)?o:f;if(l.equ(e,r))return l.equ(a(t,e),n)?o:f;if(l.equ(m(e,o),r))return l.lte(c(n,a(t,e)),t)?o:f;if(e=String(n)+","+String(t)+","+String(e)+","+String(r),null==ee.mem[e]){for(i=l.max(o,l.divceil(n,t)),t=c(t,o),u=l.min(r,c(n,t));l.lte(i,u);)f=m(f,ee(c(n,i),t,o,i)),i=m(i,o);ee.mem[e]=f}return ee.mem[e]}function re(n,t,e,r,i){if(Nn(n,Z))return new n[X](re(n.num,t,e,r,i));var u=J.Arithmetic,l=u.num,s=u.O,o=u.I,m=s,c=u.add,r=u.sub;u.div,u.mod;if(Nn(t,Z)&&(t=t.num),Nn(e,Z)&&(e=e.num),s=String(n)+","+String(t)+","+String(e)+","+String(i),null==re.mem[s]){if(n=l(n),t=r(l(t),o),e=null==e?o:l(e),null==i)for(i=o;u.lte(i,n);)m=c(m,ee(n,i,e,t)),i=c(i,o);else m=ee(n,l(i),e,t);re.mem[s]=m}return re.mem[s]}function ie(n,t,e,r){if(Nn(n,Z))return new n[X](ie(n.num,t,e,r));var i,u,l,s,o=J.Arithmetic,m=o.num,c=o.O,a=o.I,f=o.II,h=o.add,d=o.sub,g=o.mul,_=o.mod,v=c;if(Nn(t,Z)&&(t=t.num),Nn(e,Z)&&(e=e.num),Nn(r,Z)&&(r=r.num),t=null==t?null:o.abs(m(t)),e=null==e?null:o.abs(m(e)),r=null==r?null:o.abs(m(r)),n=m(n),m=null!=t?t:a,i=null!=t?t:n,l=null!=r?r:a,s=null!=e?e:n,o.equ(n,c))return null!=t&&!o.gt(t,c)||null!=e&&!o.equ(e,c)||null!=r&&!o.equ(r,c)?c:a;if(o.lt(n,c)||null!=t&&null!=e&&null!=r&&(o.gte(c,t)||o.gte(c,r)||o.gte(c,e)||o.gt(r,e)||o.gt(h(g(t,r),e),h(n,r))||o.lt(h(g(t,e),r),h(n,e)))||null!=e&&null!=r&&(o.gte(c,r)||o.gte(c,e)||o.gt(r,e)||o.gt(e,n)||o.gt(r,n)||o.equ(e,r)&&!o.equ(c,_(n,e))||!o.equ(e,r)&&(o.gt(h(e,r),n)||o.lt(h(e,r),n)&&o.lt(d(n,h(e,r)),r)))||null!=t&&null!=r&&(o.gte(c,t)||o.gte(c,r)||o.gt(g(t,r),n))||null!=t&&null!=e&&(o.gte(c,t)||o.gte(c,e)||o.gt(h(t,e),h(n,a))||o.lt(g(t,e),n))||null!=e&&(o.gte(c,e)||o.gt(e,n))||null!=r&&(o.gte(c,r)||o.gt(r,n)||o.lt(r,n)&&o.gt(h(r,r),n))||null!=t&&(o.gte(c,t)||o.gt(t,n)))return v;if(null!=e&&null==t&&null==r&&(s=n,t=i=m=e,e=null),g=String(n)+"|"+String(t)+"|"+String(e)+"|"+String(r),null==ie.mem[g]){if(null!=e&&null!=r){if(n=o.equ(e,r)?d(n,e):d(n,h(e,r)),o.equ(c,n)&&(null==t||o.equ(m,o.equ(e,r)?a:f)))return a;null!=t&&(i=d(i,f),m=d(m,f))}else if(null!=r){if(n=d(n,r),o.equ(c,n)&&(null==t||o.equ(m,a)))return a;null!=t&&(i=d(i,a),m=d(m,a))}else if(null!=e){if(n=d(n,e),o.equ(c,n)&&(null==t||o.equ(m,a)))return a;null!=t&&(i=d(i,a),m=d(m,a))}for(u=m;o.lte(u,i);)v=h(v,ee(n,u,l,s)),u=h(u,a);ie.mem[g]=v}return ie.mem[g]}function ue(n,t,e,r){var i,u,l=J.Arithmetic,s=l.add,o=l.sub,m=l.mul,c=l.O,a=l.I,f=c;if(l.lt(n,c)||l.lte(t,c)||l.lte(e,c)||l.gt(e,r)||l.gt(m(t,e),n)||l.lt(m(t,r),n))return f;if(l.gt(e,a)&&(n=o(n,m(t,o(e,a))),r=s(o(r,e),a),e=a),l.equ(t,a))return l.lte(e,n)&&l.gte(r,n)?a:f;if(l.equ(n,t))return l.lte(e,a)&&l.gte(r,a)?a:f;if(l.equ(e,r))return l.equ(m(t,e),n)?a:f;if(l.equ(n,r))return Kt(s(o(n,m(t,e)),o(t,a)),o(t,a));if(l.equ(s(e,a),r))return Kt(t,o(n,m(t,e)));if(m=String(n)+","+String(t)+","+String(e)+","+String(r),null==ue.mem[m]){for(u=o(n,e),i=l.max(a,o(n,r)),t=o(t,a);l.lte(i,u);)f=s(f,ue(i,t,e,r)),i=s(i,a);ue.mem[m]=f}return ue.mem[m]}function le(n,t,e,r,i,u,l){if(Nn(n,Z))return new n[X](le(n.num,t,e,r,i,u,l));var s,o,m,c,a,f,h,d,g,_,v,b,p,y,x=J.Arithmetic,q=x.num,A=x.O,I=x.I,O=(x.II,A),w=x.add,S=x.sub,C=x.mul,N=x.div,R=(x.divceil,x.mod);if(Nn(t,Z)&&(t=t.num),Nn(e,Z)&&(e=e.num),Nn(r,Z)&&(r=r.num),s=String(n)+","+String(t)+","+String(e)+","+String(r)+","+String(i)+","+String(0<u)+","+String(0<l),null==le.mem[s]){if(n=q(n),t=q(t),m=null==r?n:q(r),o=null==e?I:q(e),null==e&&null==r)if(x.gt(n,I)&&Vt(S(n,I)),null==i)for(h=o;x.lt(h,t);)f=S(n,h),O=w(O,x.gte(f,I)?Vt(S(f,I)):A),h=w(h,I);else for(h=o,i=S(q(i),I);x.lt(h,t);)O=w(O,ue(S(n,h),i,o,m)),h=w(h,I);else if(0<u&&0<l||0<u&&null==r||0<l&&null==e)if(null==i)for(h=o;x.lt(h,t);){for(f=S(n,h),i=I;x.lte(i,f);)O=w(O,ue(f,i,o,m)),i=w(i,I);h=w(h,I)}else for(h=o,i=S(q(i),I);x.lt(h,t);)O=w(O,ue(S(n,h),i,o,m)),h=w(h,I);else if(null!=r&&(0<u||null==e))if(null==i)for(h=o,g=S(m,I);x.lt(h,t);){if(f=S(n,h),x.equ(m,f))O=w(O,I);else for(x.equ(A,R(f,m))&&(O=w(O,I)),a=I,d=m;x.lte(d,f);){for(c=I,i=S(f,d);x.lte(c,i);)y=ue(i,c,o,g),x.equ(A,y)||(O=w(O,C(y,Kt(w(c,a),a)))),c=w(c,I);d=w(d,m),a=w(a,I)}h=w(h,I)}else for(h=o,i=S(q(i),I),g=S(m,I);x.lt(h,t);){if(f=S(n,h),x.equ(C(i,m),f))O=w(O,I);else for(a=I,d=m;x.lte(d,f)&&x.lte(a,i);)y=ue(S(f,d),S(i,a),o,g),x.equ(A,y)||(O=w(O,C(y,Kt(i,a)))),d=w(d,m),a=w(a,I);h=w(h,I)}else if(null!=e&&(0<l||null==r))if(null==i)for(_=w(h=o,I);x.lt(h,t);){if(f=S(n,h),x.equ(o,f))O=w(O,I);else for(x.equ(A,R(f,o))&&(O=w(O,I)),d=x.equ(o,h)?a=A:(a=I,o);x.lte(d,f);){for(c=I,i=N(v=S(f,d),o);x.lte(c,i);)y=ue(v,c,_,m),x.equ(A,y)||(O=w(O,C(y,Kt(w(c,a),a)))),c=w(c,I);d=w(d,o),a=w(a,I)}h=w(h,I)}else for(h=o,i=S(q(i),I),_=w(o,I);x.lt(h,t);){if(f=S(n,h),x.equ(C(i,o),f))O=w(O,I);else for(d=x.equ(o,h)?a=A:(a=I,o);x.lte(d,f)&&x.lte(a,i);)y=ue(S(f,d),S(i,a),_,m),x.equ(A,y)||(O=w(O,C(y,Kt(i,a)))),d=w(d,o),a=w(a,I);h=w(h,I)}else if(null==i)for(v=w(h=o,I),b=S(m,I);x.lt(h,t);){if(f=S(n,h),x.equ(m,o))O=w(O,x.equ(A,R(f,m))?I:A);else for(g=x.max(I,N(f,m)),_=x.max(I,N(f,o)),a=I;x.lte(a,g);){for(c=x.equ(o,h)?A:I;x.lte(c,_);){if(d=S(f,w(C(a,m),C(c,o))),x.equ(A,d))O=w(O,Kt(w(a,c),[a,c]));else{if(!x.gt(d,A))break;for(p=I,i=N(d,o);x.lte(p,i);)y=ue(d,p,v,b),x.equ(A,y)||(O=w(O,C(y,Kt(w(p,w(a,c)),[[a,c]])))),p=w(p,I)}c=w(c,I)}a=w(a,I)}h=w(h,I)}else for(h=o,i=S(q(i),I),v=w(o,I),b=S(m,I);x.lt(h,t);){if(f=S(n,h),x.equ(m,o))O=w(O,x.equ(C(i,m),f)?I:A);else for(g=x.max(I,N(f,m)),_=x.max(I,N(f,o)),a=I;x.lte(a,g);){for(c=x.equ(o,h)?A:I;x.lte(c,_);){if(p=S(i,w(a,c)),d=S(f,w(C(a,m),C(c,o))),x.equ(A,d)&&x.equ(A,p))O=w(O,Kt(i,[a,c]));else{if(!x.gt(p,A)||!x.gt(d,A))break;y=ue(d,p,v,b),x.equ(A,y)||(O=w(O,C(y,Kt(i,[[a,c]]))))}c=w(c,I)}a=w(a,I)}h=w(h,I)}le.mem[s]=O}return le.mem[s]}function se(n,t,e,r){if(Nn(n,Z))return new n[X](se(n.num,t,e,r));var i,u,l,s,o,m,c,a,f,h=J.Arithmetic,d=h.num,g=h.O,_=h.I,v=(h.II,h.add),b=h.sub,p=h.mul,y=h.div,x=h.mod,q=g;if(Nn(t,Z)&&(t=t.num),Nn(e,Z)&&(e=e.num),Nn(r,Z)&&(r=r.num),t=null==t?null:h.abs(d(t)),e=null==e?null:h.abs(d(e)),r=null==r?null:h.abs(d(r)),n=d(n),h.equ(n,g))return null!=t&&!h.gt(t,g)||null!=e&&!h.equ(e,g)||null!=r&&!h.equ(r,g)?g:_;if(h.lt(n,g)||null!=t&&null!=e&&null!=r&&(h.gte(g,t)||h.gte(g,r)||h.gte(g,e)||h.gt(r,e)||h.gt(v(p(t,r),e),v(n,r))||h.lt(v(p(t,e),r),v(n,e)))||null!=e&&null!=r&&(h.gte(g,r)||h.gte(g,e)||h.gt(r,e)||h.gt(e,n)||h.gt(r,n)||h.equ(e,r)&&!h.equ(g,x(n,e))||!h.equ(e,r)&&(h.gt(v(e,r),n)||h.lt(v(e,r),n)&&h.lt(b(n,v(e,r)),r)))||null!=t&&null!=r&&(h.gte(g,t)||h.gte(g,r)||h.gt(p(t,r),n))||null!=t&&null!=e&&(h.gte(g,t)||h.gte(g,e)||h.gt(v(t,e),v(n,_))||h.lt(p(t,e),n))||null!=e&&(h.gte(g,e)||h.gt(e,n))||null!=r&&(h.gte(g,r)||h.gt(r,n)||h.lt(r,n)&&h.gt(v(r,r),n))||null!=t&&(h.gte(g,t)||h.gt(t,n)))return q;if(d=String(n)+"|"+String(t)+"|"+String(e)+"|"+String(r),null==se.mem[d]){if(null!=t&&null!=e&&null!=r)if(h.equ(e,r))q=h.equ(p(t,e),n)?_:g;else for(m=h.max(_,y(n,e)),c=h.max(_,y(n,r)),s=v(r,_),o=b(e,_),i=_;h.lte(i,m);){for(u=_;h.lte(u,c);){if(l=b(t,v(i,u)),f=b(n,v(p(i,e),p(u,r))),h.equ(g,f)&&h.equ(g,l))q=v(q,Kt(t,[i,u]));else{if(!h.gt(l,g)||!h.gt(f,g))break;a=ue(f,l,s,o),h.equ(g,a)||(q=v(q,p(a,Kt(t,[[u,i]]))))}u=v(u,_)}i=v(i,_)}else if(null!=r&&null!=e)if(h.equ(e,r))q=h.equ(g,x(n,e))?_:g;else for(m=h.max(_,y(n,e)),c=h.max(_,y(n,r)),s=v(r,_),o=b(e,_),i=_;h.lte(i,m);){for(u=_;h.lte(u,c);){if(f=b(n,v(p(i,e),p(u,r))),h.equ(g,f))q=v(q,Kt(v(i,u),[i,u]));else{if(!h.gt(f,g))break;for(l=_,t=y(f,r);h.lte(l,t);)a=ue(f,l,s,o),h.equ(g,a)||(q=v(q,p(a,Kt(v(l,v(i,u)),[[i,u]])))),l=v(l,_)}u=v(u,_)}i=v(i,_)}else if(null!=t&&null!=r)if(h.equ(p(t,r),n))q=_;else for(c=v(f=r,i=_);h.lte(f,n)&&h.lte(i,t);)a=ue(b(n,f),b(t,i),c,n),h.equ(g,a)||(q=v(q,p(a,Kt(t,i)))),f=v(f,r),i=v(i,_);else if(null!=t&&null!=e)if(h.equ(p(t,e),n))q=_;else for(m=b(f=e,i=_);h.lte(f,n)&&h.lte(i,t);)a=ue(b(n,f),b(t,i),_,m),h.equ(g,a)||(q=v(q,p(a,Kt(t,i)))),f=v(f,e),i=v(i,_);else if(null!=t)q=ue(n,t,_,n);else if(null!=r)if(h.equ(r,n))q=_;else for(h.equ(g,x(n,r))&&(q=_),c=v(f=r,i=_);h.lte(f,n);){for(l=_,t=y(s=b(n,f),r);h.lte(l,t);)a=ue(s,l,c,n),h.equ(g,a)||(q=v(q,p(a,Kt(v(l,i),i)))),l=v(l,_);f=v(f,r),i=v(i,_)}else if(null!=e)if(h.equ(e,n))q=_;else for(h.equ(g,x(n,e))&&(q=_),m=b(f=e,i=_);h.lte(f,n);){for(l=_,t=b(n,f);h.lte(l,t);)a=ue(t,l,_,m),h.equ(g,a)||(q=v(q,p(a,Kt(v(l,i),i)))),l=v(l,_);f=v(f,e),i=v(i,_)}else q=h.gt(n,_)?Vt(b(n,_)):_;se.mem[d]=q}return se.mem[d]}function oe(n){var t=J.Arithmetic,e=t.O,r=t.I,i=t.II,u=t.num,l=t.val,s=t.add,o=t.sub,m=t.div,c=t.mul,a=e,f=J.Options.MAXMEM;return Nn(n,Z)?new n[X](oe(n.num)):(n=u(n),t.lte(n,17)?t.lt(n,e)?e:u([1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845,35357670,129644790][l(n)]):(l=String(n),null==oe.mem[l]?t.lt(n,f)?(a=m(c(oe(o(n,r)),o(c(n,4),i)),s(n,r)),oe.mem[l]=a):a=m(Kt(c(n,i),n),s(n,r)):a=oe.mem[l],a))}function me(n){var t,e=J.Arithmetic,r=e.O,i=e.I,u=e.num,l=e.val,s=e.add,o=e.sub,m=e.mul,c=r,a=J.Options.MAXMEM;if(Nn(n,Z))return new n[X](me(n.num));if(n=u(n),e.lte(n,14))return e.lt(n,r)?r:u([1,1,2,5,15,52,203,877,4140,21147,115975,678570,4213597,27644437,190899322][l(n)]);if(l=String(n),null==me.mem[l]){for(t=c=r,n=o(n,i);e.lte(t,n);)c=s(c,m(Kt(n,t),me(t))),t=s(t,i);e.lt(n,a)&&(me.mem[l]=c)}else c=me.mem[l];return c}function ce(n){var t=J.Arithmetic,e=t.O,r=t.I,i=t.II,u=t.num,l=t.val,s=e,o=J.Options.MAXMEM;return Nn(n,Z)?new n[X](ce(n.num)):(n=u(n),t.lte(n,36)?t.lt(n,e)?e:u([0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352][l(n)]):(u=String(n),null==ce.mem[u]?(l=t.div(n,i),r=ce(t.add(l,r)),l=ce(l),s=t.equ(e,t.mod(n,i))?t.mul(l,t.sub(t.mul(r,t.II),l)):t.add(t.mul(r,r),t.mul(l,l)),t.lt(n,o)&&(ce.mem[u]=s)):s=ce.mem[u],s))}function ae(){var n,t,e,r,i,u,l,s,o,m,c,a=arguments,f=a.length;if(!f)return[];if(!0===a[0]){for(m=a[1].length,n=2;n<f;n++)m*=a[n].length;for(c=new Array(m),n=0;n<m;n++){for(s=0,e=n,t=u=1;t<f;t++)i=e%(r=a[t].length),e=~~(e/r),s+=u*(l=a[t][i]),u*=r;c[n]=s}}else{for(m=a[0].length,n=1;n<f;n++)m*=a[n].length;for(c=new Array(m),n=0;n<m;n++){for(s=new Array(f),o=0,e=n,t=f-1;0<=t;t--)if(i=e%(r=a[t].length),e=~~(e/r),qn(l=a[t][i])||An(l))for(u=l.length-1;0<=u;u--)s[f-++o]=l[u];else s[f-++o]=l;c[n]=s}}return c}function fe(n,t,e){var r,i,u,l,s,o,m,c,a,f,h,d,g,_,v,b,p,y,x,q,A,I,O,w,S,C=n.length,N=null,R=null;if(!C)return[];for(e=!!Sn(e)&&(R=e,!0),ln!==t&&sn!==t&&on!==t&&mn!==t&&cn!==t&&an!==t&&(t=!1),y=new Array(C),x=[],p=[],i=1,r=0;r<C;r++)if(Sn(n[r][0]))if(n[r][1].length)for(w=0,S=n[r][1].length;w<S;w++)null==y[n[r][1][w]]?y[n[r][1][w]]=[[n[r][0],r,n[r][1]]]:y[n[r][1][w]].push([n[r][0],r,n[r][1]]);else x.push([n[r][0],r]);else if(p.push(r),!(i*=n[r].length)||i<=0)return[];if(!p.length)return[];for(v=new Array(i),_=0,d=C-1,A=p.length-1,r=0;r<i;r++){for(f=new Array(C),I=!1,l=r,u=A;0<=u;u--)o=l%(s=n[b=p[u]].length),l=~~(l/s),f[b]=n[b][o];for(u=0,q=x.length;u<q;u++)O=x[u],f[O[1]]=O[0]();for(u=0;u<C;u++)if(null!=y[u])for(w=0,S=(O=y[u]).length;w<S;w++)b=O[w][1],null==f[b]&&(g=!0,m=O[w][2].map(function(n){return null!=f[n]&&!isNaN(f[n])||(g=!1),f[n]}),g&&(f[b]=O[w][0].apply(null,m)));if(t||e)if(null==f[d]||isNaN(f[d])||e&&!R(f,d,d))I=!0;else for(a=f[d],sn===t&&((N={})[a]=1),h=d-1;0<=h;h--){if(null==(c=f[h])||isNaN(c)||ln===t&&a!==c||sn===t&&1===N[c]||on===t&&a<=c||mn===t&&c<=a||cn===t&&c<a||an===t&&a<c||e&&!R(f,h,d)){I=!0;break}sn===t&&(N[c]=1),a=c}I||(v[_++]=f)}return v.length>_&&(v.length=_),v}function he(n,t,e,r,i){r=!0===r,e=e===A?A:q,i=i||M.Q();for(var u,l=0,s=0,o=0,m=n.length,c=t.length,a=new Array(m+c),f=J.Arithmetic.O;l<m&&s<c;)0<e.cmp(n[l],t[s])?((u=n[l].cast(i)).equ(f)||(a[o++]=u),l++):(0<e.cmp(t[s],n[l])?(u=(r?t[s].neg():t[s]).cast(i)).equ(f)||(a[o++]=u):((u=(r?n[l].sub(t[s]):n[l].add(t[s])).cast(i)).equ(f)||(a[o++]=u),l++),s++);for(;l<m;)(u=n[l].cast(i)).equ(f)||(a[o++]=u),l++;for(;s<c;)(u=(r?t[s].neg():t[s]).cast(i)).equ(f)||(a[o++]=u),s++;return a.length>o&&(a.length=o),a}function de(t,e,r,i){r=r===A?A:q,i=i||M.Q();var n,u,l,s,o,m,c,a=J.Arithmetic.O;if(t.length>e.length&&(u=t,t=e,e=u),u=t.length,l=e.length,s=new Array(u*l),0<u&&0<l){for(s[n=0]=r(0,t[0].mul(e[0]).e,i),c=g(Dn(u,function(n){return[t[n].cast(i).mul(e[0].cast(i)),n]}),"max",function(n,t){return r.cmp(n[0],t[0])}),o=Dn(u,0);m=c.peek();)0!==r.cmp(s[n],m[0])&&(s[n].equ(a)||(s[++n]=r(0,0,i)),s[n].e=m[0].e),s[n]=s[n].add(m[0]),o[m[1]]++,o[m[1]]<l?c.replace([t[m[1]].cast(i).mul(e[o[m[1]]].cast(i)),m[1]]):c.pop();c.dispose(),s.length>n+1&&(s.length=n+1)}return s}function ge(n,t,e,r,i){r=!0===r,e=e===A?A:q,i=i||M.Q();var u,l,s,o=n.length,m=t.length,c=J.Arithmetic.O,a=g([],"max",function(n,t){return e.cmp(n.term,t.term)}),f=[],h=[],d=0;if(!t.length)return null;for(s=t[0].cast(i);(l=a.peek())||d<o;)null==l||d<o&&e.cmp(l.term,n[d])<0?(u=n[d].cast(i),d++):d<o&&0===e.cmp(l.term,n[d])?(u=n[d].cast(i).sub(l.term),m>l.n?a.replace({term:l.Q.mul(t[l.n].cast(i)),n:l.n+1,Q:l.Q}):a.pop(),d++):(u=l.term.neg(),m>l.n?a.replace({term:l.Q.mul(t[l.n].cast(i)),n:l.n+1,Q:l.Q}):a.pop()),u.equ(c)||(s.divides(u)?(f=he(f,[l=u.div(s)],e,!1,i),1<m&&a.push({term:l.mul(t[1].cast(i)),n:2,Q:l})):r&&(h=he(h,[u],e,!1,i)));return a.dispose(),r?[f,h]:f}function _e(n,t,e){return null==t||!t.length||t.length<=1?1===t.length?Dn(n-1,function(n){return n<t[0]?n:n+1}):Dn(n,0,1):(!0===e&&(-1===(e=Vn(t))?t=kn(new Array(t.length),t):0===e&&(t=Wn(t.slice(),1,!0))),Gn(null,n,t))}function ve(n,t){if(t<=0)return[];var e,r=Dn(t,0,0),i=n.length;for(--t,e=0;e<i;e++)r[t-n[e]]=1;return r}function be(n,t){t=Q.min(t||n.length,n.length);var e,r=[];for(--t,e=0;e<=t;e++)0<n[e]&&r.push(t-e);return r}function pe(n,t,e){return null==n?null:(t=t||n.length,Xn(new Array(t),n,1,-1,-1===e?t-1:0,-1===e?0:t-1,0,t-1))}function ye(n,t,e){return null==n?null:(t=t||n.length,Fn(new Array(t),n,1,1,-1===e?t-1:0,-1===e?0:t-1,0,t-1))}function xe(n,t,e){if(null==t)return null;var r,i=null,u=t.length;if(e=-1===e?-1:1,n)(r=En(nt,0,t))<=1?i=t.slice():(0<(r-=En(nt,0,i=ye(_e(r-1,pe(t,u-1,e)))))&&i.push(r),e<0&&kn(i,i));else{var l,s,o,m,c,a=1,n=0,f=0,h="push";if(e<0&&(a=-a,n=u-1-n,h="unshift"),qn(t[n]))for(i=[[(c=t[n])[1],c[0]]],l=0,o=1,m=a+n;o<u;o++,m+=a)s=e<0?0:l,(c=t[m])[1]===i[s][0]?i[s][1]+=c[0]:(i[h]([c[1],c[0]]),l++);else for(i=Dn(r=t[n],1,0),e<0&&(f=r-1-f),o=1,m=a+n;o<u;o++,m+=a)for(l=0,s=f,c=t[m];l<r&&0<c;)i[s]++,c--,l++,s+=a}return i}function qe(n,t,e){var r,i,u=t.length,l=u*u;for(n=n||new Array(l),i=r=0;r<l;)n[r+i]=0,++i>=u&&(i=0,r+=u);if(!0===e)for(r=0;r<u;r++)n[u*t[r]+r]=1;else for(i=r=0;i<u;i++,r+=u)n[r+t[r]]=1;return n}function Ae(n,t,e){var r,i,u=t.length,l=Q.floor(Q.sqrt(u));if(n=n||new Array(l),!0===e)for(i=r=0;r<l;)t[l*r+i]&&(n[i]=r),++i>=l&&(i=0,r++);else for(i=r=0;r<l;)t[r+i]&&(n[r]=i),++i>=l&&(i=0,r++);return n}function Ie(e,n,t){var r=e?e.length:0,i=1,u=0,l=0,s=l<r&&e[l]||1;return-1===t&&(i=-1,u=(r||n)-1),En(function(n,t){return s<=0&&(u+=i,s=++l<r&&e[l]||1),s--,n[t]=u,n},new Array(n),null,0,n-1)}function Oe(n,t){return En(function(n,t,e){return n[t]=e,n},n||new Array(t.length),t)}function we(n,t,e){var r=t.length,u=Q.ceil(V(e||r)),l=1<<u,s=Dn((1<<1+u)-1,0,0);return En(function(n,t,e){for(var r=t+l,i=0;i<u;i++)1&r&&(t-=s[r>>>1<<1]),s[r]+=1,r>>>=1;return s[r]+=1,n[e]=t,n},n||new Array(r),t)}function Se(n,t,e){for(var r,i,u=t.length,l=Q.ceil(V(e||u)),s=1<<l,o=new Array((1<<1+l)-1),m=0;m<=l;m++)for(r=(i=1)<<m;i<=r;i++)o[r-1+i]=1<<l-m;return En(function(n,t,e){for(var r=1,i=0;i<l;i++)--o[r],t>=o[r<<=1]&&(t-=o[r],r++);return o[r]=0,n[e]=r-s,n},n||new Array(u),t)}function Ce(n,t){var e=n.length,r=new Array(e),i=!0===t?1:0,u=Dn(e,0,0),l=0,s=0,o=new Array(e),m=0,c=l++;for(u[o[m++]=c]=1;l<e;){if(u[c=n[c]])for(i<m&&(o.length=m,r[s++]=o),o=new Array(e),m=0;l<e&&u[c=l];)++l;u[c]||(u[o[m++]=c]=1)}return i<m&&(o.length=m,r[s++]=o),s<r.length&&(r.length=s),r}function Ne(n,t){for(var e,r,i,u=Dn(t||n.reduce(function(n,t){return Q.max(n,Q.max.apply(null,t)||0)},0)+1,0,1),l=n.length-1;0<=l;l--)if(r=(i=n[l]).length){for(e=0;e+1<r;e++)u[i[e]]=i[e+1];u[i[r-1]]=i[0]}return u}function Re(n){for(var t=n.length,e=new Array(t),r=0,i=Ce(n,!0),u=0,l=i.length;u<l;u++)r=function(n,t,e){var r,i=n.length,u=null==t;if(1<i)for(u&&(t=new Array(i-1),e=0),r=i-1;1<=r;r--)t[e++]=[n[0],n[r]];else u&&(t=[]);return u?t:e}(i[u],e,r);return r<e.length&&(e.length=r),e}function Ze(n,t){t=t||n.reduce(function(n,t){return Q.max(n,Q.max.apply(null,t)||0)},0)+1;for(var e,r,i=n.length,u=new Array(t),l=0;l<t;l++)u[l]=l;for(l=0;l<i;l++)swap=e[l],r=u[e[0]],u[e[0]]=u[e[1]],u[e[1]]=r;return u}function Me(e,r,n){var i=e.length,u=r.length;if(!0===n)return En(i<u?function(n,t){return n[t]=r[t]<i?e[r[t]]:e[t],n}:u<i?function(n,t){return n[t]=t<u?e[r[t]]:e[t],n}:function(n,t){return n[t]=e[r[t]],n},new Array(i),null,0,i-1,1);for(var t=e.slice(),l=0;l<i;l++)e[l]=t[r[l]];return e}function Ee(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<l;o++){for(u=n[o],r=!0,i=0;i<s;i++)if(t[i]!==u[i]){r=!1;break}if(r)return o}return-1}return n&&n.length?n.indexOf(t):-1}function De(n,t){return Q.round((t-n)*J.Math.rnd()+n)}function Te(){var n=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;return n.length?En(function(n,t){return t.gt(n)?t:n},n[0],1,n.length-1):null}function Pe(){var n=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;return n.length?En(function(n,t){return t.lt(n)?t:n},n[0],1,n.length-1):null}function ke(i,u){var t=null;return qn(i)&&Sn(i[0])?(t=i[0],i=function(n){return Nn(n,t)},u=Sn(u)?u:function(n){return new t(n)}):Sn(i)||(i=function(n){return!0},u=function(n){return n}),function n(t){if(qn(t)||An(t))for(var e=0,r=t.length;e<r;e++)t[e]=n(t[e]);else i(t)||(t=u(t));return t}}function $e(n){if(!arguments.length||null==n)return dn;var t=0;if(On(n)){for(var e=0,r=(n=n.toUpperCase().split(",").map(H)).length;e<r;e++)t|=n[e].length&&z.call($e,n[e])?$e[n[e]]:0;0<t&&!((bn|vn)&t)&&(t|=dn),t<=0&&(t=dn)}else t=pn&n?pn&n:dn;return vn&t&&bn&t&&(t&=~bn),_n&t&&(gn|dn)&t&&(t&=~(gn|dn)),gn&t&&dn&t&&(t&=~dn),vn&t&&(t&=~fn),t}function Le(n,t,e,r,i){if(null==n)return null;var u,l=null;if("ordered"===i||"variation"===i)for(l={},u=0;u<e;u++)l[n[u]]=1;return l}return zt.mem=c(),Kt.mem1=c(),Kt.mem2=c(),Kt.mem3=c(),Yt.mem=c(),te.mem1=c(),te.mem2=c(),ee.mem=c(),re.mem=c(),ie.mem=c(),ue.mem=c(),le.mem=c(),se.mem=c(),oe.mem=c(),me.mem=c(),ce.mem=c(),J.Class=n,J.Options={MAXMEM:1e4,RANDOM:"index"},t=J.DefaultArithmetic={isDefault:function(){return!0},isNumber:function(n){return this.isDefault()?wn(n):wn(n)||Nn(n,this.O[X])},J:-1,O:0,I:1,II:2,INF:{valueOf:function(){return 1/0},toString:function(){return"Infinity"},toTex:function(){return"\\infty"}},NINF:{valueOf:function(){return-1/0},toString:function(){return"-Infinity"},toTex:function(){return"-\\infty"}},nums:function(n){if(qn(n)||An(n)){for(var t=0,e=n.length;t<e;t++)n[t]=this.nums(n[t]);return n}return this.num(n)},num:function(n){return wn(n)?Q.floor(n):parseInt(n||0,10)},val:function(n){return Q.floor(n.valueOf())},digits:function(n,t){t=n.toString(+(t||10));return"-"===t.charAt(0)&&(t=t.slice(1)),t},neg:function(n){return-+n},inv:yn,equ:function(n,t){return n===t},gte:function(n,t){return t<=n},lte:function(n,t){return n<=t},gt:function(n,t){return t<n},lt:function(n,t){return n<t},inside:function(n,t,e,r){return r?t<=n&&n<=e:t<n&&n<e},clamp:function(n,t,e){return n<t?t:e<n?e:n},wrap:function(n,t,e){return n<t?e:e<n?t:n},wrapR:function(n,t){return n<0?n+t:n},add:nt,sub:function(n,t){return n-t},mul:function(n,t){return n*t},div:function(n,t){return Q.floor(n/t)},divceil:function(n,t){return Q.ceil(n/t)},mod:function(n,t){return n%t},pow:Q.pow,shl:function(n,t){return n<<t},shr:function(n,t){return n>>t},bor:function(n,t){return n|t},band:function(n,t){return n&t},xor:function(n,t){return n^t},abs:Q.abs,min:Q.min,max:Q.max,rnd:De},J.Arithmetic=r({},t,{isDefault:function(){return 0===this.O&&this.add===nt},neg:function(n){return J.Arithmetic.mul(J.Arithmetic.J,n)},abs:function(n){return J.Arithmetic.gt(J.Arithmetic.O,n)?J.Arithmetic.neg(n):n},min:function(n,t){return J.Arithmetic.lt(n,t)?n:t},max:function(n,t){return J.Arithmetic.gt(n,t)?n:t},divceil:function(n,t){if(null==t)return n;var e=J.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}}),J.Math={rnd:Q.random,rndInt:De,factorial:Kt,stirling:te,partitions:ie,compositions:se,bell:me,catalan:oe,fibonacci:ce,polygonal:function n(t,e){var r=J.Arithmetic,i=(r.O,r.I,r.II),u=r.num;return Nn(e,Z)&&(e=e.num),e=u(e),r.lt(e,3)?null:Nn(t,Z)?new t[X](n(t.num,e)):(t=u(t),r.div(r.mul(t,r.sub(r.mul(t,r.sub(e,i)),r.sub(e,4))),i))},sum:tt,product:et,pow2:Vt,exp:Bt,powsq:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](ot(n.num,t)):ot(e.num(n),t)},addm:function(n,t,e){var r=J.Arithmetic;return e=Nn(e,Z)?e.num:r.num(e),t=Nn(t,Z)?t.num:r.num(t),Nn(n,Z)?new n[X](it(n.num,t,e)):it(r.num(n),t,e)},negm:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](rt(n.num,t)):rt(e.num(n),t)},mulm:function(n,t,e){var r=J.Arithmetic;return e=Nn(e,Z)?e.num:r.num(e),t=Nn(t,Z)?t.num:r.num(t),Nn(n,Z)?new n[X](ut(n.num,t,e)):ut(r.num(n),t,e)},invm:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](lt(n.num,t)):lt(e.num(n),t)},powm:function(n,t,e){var r=J.Arithmetic;return e=Nn(e,Z)?e.num:r.num(e),t=Nn(t,Z)?t.num:r.num(t),Nn(n,Z)?new n[X](st(n.num,t,e)):st(r.num(n),t,e)},isqrt:function(n){var t=J.Arithmetic;return Nn(n,Z)?new n[X](mt(n.num)):mt(t.num(n))},ikthroot:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](at(n.num,t)):at(e.num(n),t)},isqrtp:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](_t(n.num,t)):_t(e.num(n),t)},ilog:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](vt(n.num,t)):vt(e.num(n),t)},divisors:function(n,t){var e=J.Arithmetic;return Lt(Nn(n,Z)?n:e.num(n),!0===t)},legendre:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](gt(n.num,t)):gt(e.num(n),t)},jacobi:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](dt(n.num,t)):dt(e.num(n),t)},moebius:function(n){var t=J.Arithmetic;return Nn(n,Z)?new n[X](jt(n.num)):jt(t.num(n))},pollardRho:function(n,t,e,r,i,u){var l,s=J.Arithmetic.num;return null!=e&&(e=Nn(e,Z)?e.num:s(e)),null!=t&&(t=Nn(t,Z)?t.num:s(t)),Nn(n,Z)?null==(l=Ot(n.num,t,e,r,i||null,u||null))?l:new n[X](l):Ot(s(n),t,e,r,i||null,u||null)},factorize:function(n){var t=J.Arithmetic;return wt(Nn(n,Z)?n:t.num(n))},isProbablePrime:function(n){var t=J.Arithmetic;return qt(Nn(n,Z)?n.num:t.num(n))},isPrime:function(n){var t=J.Arithmetic;return It(Nn(n,Z)?n.num:t.num(n))},nextPrime:function(n,t){var e=J.Arithmetic;return function(n,t){var e,r=J.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(qt(e)&&It(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(qt(e)&&It(e))return e}}(Nn(n,Z)?n.num:e.num(n),-1===t?-1:1)},gcd:function(){var t=J.Arithmetic,n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments),e=null,n=Nt(n.map(function(n){return Nn(n,Z)?(e=e||n[X],n.num):t.num(n)}));return e?new e(n):n},xgcd:function(){var t=J.Arithmetic,n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments),e=null,n=Mt(n.map(function(n){return Nn(n,Z)?(e=e||n[X],n.num):t.num(n)}));return e&&n?n.map(function(n){return new e(n)}):n},lcm:function(){var t=J.Arithmetic,n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments),e=null,n=Zt(n.map(function(n){return Nn(n,Z)?(e=e||n[X],n.num):t.num(n)}));return e?new e(n):n},diophantine:function(n,t,e,r){var i=J.Arithmetic;return(qn(n)||An(n))&&n.length?Ft(i.nums(n),i.num(t||0),e,!0===r):null},diophantines:function(n,t,e,r){var i=M.Z();return(Nn(n,E)||qn(n)||An(n))&&(!Nn(n,E)||n.nr&&n.nc)&&(Nn(n,E)||n.length)?(Nn(t,E)||qn(t)||An(t)||(t=Dn(Nn(n,E)?n.nr:n.length,function(){return t||0})),Xt(n,t=Nn(t,E)?t:i.cast(t),e,!0===r)):null},congruence:function(n,t,e,r,i){var u,l,s,o,m,c,a=J.Arithmetic;return(qn(n)||An(n))&&n.length?(n=a.nums(n),t=a.num(t||0),u=a.num(e||0),l=r,i=!0===i,m=J.Arithmetic,c=m.O,n.length?(i=!0===i,(s=Ft(n.concat(u),t,l,i))&&i&&(o=s[1],s=s[0]),null==(s=null==s?null:Dn(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,a,f,h=M.Z();return(Nn(n,E)||qn(n)||An(n))&&(!Nn(n,E)||n.nr&&n.nc)&&(Nn(n,E)||n.length)?(n=Nn(n,E)?n:h.cast(n),Nn(t,E)||qn(t)||An(t)||(t=Dn(Nn(n,E)?n.nr:n.length,function(){return t||0})),t=Nn(t,E)?t:h.cast(t),Nn(e,E)||qn(e)||An(e)||(e=Dn(Nn(n,E)?n.nr:n.length,function(){return e||0})),e=Nn(e,E)?e:h.cast(e),u=n,h=t,l=e,s=r,n=!0===i,r=M.Z(),a=J.Arithmetic,f=r.Zero(),Nn(u,E)&&Cn(u.ring.NumberClass,Z)||(u=E(r,u)),u.nr&&u.nc?(qn(l)||An(l)||Nn(l,E)||(l=Dn(u.nr,function(n){return l})),(qn(l)||An(l))&&(l=E(r,l)),(qn(h)||An(h))&&(h=E(r,h)),i=l.col(0),m=r.lcm(i),u=u.concat(l),n=!0===n,null!=(o=Xt(u,h,s,!0))&&(c=o[1],o=o[0]),null==(o=null==o?null:Dn(o.length-1,function(n){var t,e=o[n],r=!0;if(!1===s)a.gt(a.O,e)&&(e=a.add(e,m.num));else{for(t in e.terms)if(z.call(e.terms,t)&&"1"!==t&&a.equ(a.O,a.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(C(S(n),m))),e.c().real().lt(f)&&(e=e.add(m))}return e}))?null:n?[o,c]:o):null):null},pythagorean:function(n,t){var e=J.Arithmetic;return(qn(n)||An(n))&&n.length?function(t,n){var e,r,i,u,l,s,o,m,c=J.Arithmetic,a=c.O,f=c.I,h=c.J,d=c.II,g=t.length,_=On(n)&&n.length?n:"i";if(!g)return null;if(m=t.filter(function(n){return 1===Gt(n)}).length,n=t.filter(function(n){return-1===Gt(n)}).length,1===g||0===m||0===n)return Dn(g,function(){return N()});if(o=Dn(g,function(n){return mt(c.abs(t[n]))}),g!==t.filter(function(n,t){return c.equ(c.abs(n),c.mul(o[t],o[t]))}).length)return Dn(g,function(){return N()});if(u=Dn(g-1,function(n){return _+"_"+(n+1)}),2===g)return[N(C(S(u[0]),o[1])),N(C(S(u[0]),o[0]))];for(Gt(t[0])+Gt(t[1])+Gt(t[2])<0&&(t=t.map(function(n){return c.neg(n)})),l=e=0;l<g;l++)-1===Gt(t[l])&&(e=l);for(n=N(Dn(u.length,function(n){return C(u[n]+"^2")})),r=(h=[N([n,C(u[g-2]+"^2",c.mul(h,d))])].concat(Dn(g-2,function(n){return N(C(u[n]+"*"+u[g-2],d))}))).slice(0,e).concat(n).concat(h.slice(e)),s=f,l=0;l<g;l++)s=Zt(s,!(l===e||0<e&&0===l||0===e&&1===l)&&c.equ(a,c.mod(o[l],d))?c.div(o[l],d):o[l]);for(l=0;l<g;l++)i=r[l],r[l]=r[l].mul(c.div(s,o[l])),c.equ(a,c.mod(s,o[l]))||(r[l]=r[l].add(i.div(d)));return r}(e.nums(n),t):null},linears:function(n,t,e){var r,i,u,l=M.Q();return(Nn(n,E)||qn(n)||An(n))&&(!Nn(n,E)||n.nr&&n.nc)&&(Nn(n,E)||n.length)?(Nn(t,E)||qn(t)||An(t)||(t=Dn(Nn(n,E)?n.nr:n.length,function(){return t||0})),t=Nn(t,E)?t:l.cast(t),l=t,r=e,Nn(e=n,E)?e.ring.isField()||(e=E(e.ring.associatedField(),e)):e=E(M.Q(),e),e.nr&&e.nc?(l=E(e.ring,l),n=e.ginv(),i=n.mul(l),!0===r?i.col(0):e.mul(i).equ(l)?!1===r?i.col(0):(u=E.I(e.ring,i.nr).sub(n.mul(e)),On(r)?r=Dn(u.nc,function(n){return r+"_"+(n+1)}):qn(r)&&u.nc>r.length&&(r=r.concat(Dn(u.nc-r.length,function(n){return r[r.length-1].split("_")[0]+"_"+(r.length+n+1)}))),Dn(i.nr,function(t){return N(Dn(u.nc,function(n){return C(S(r[n]),u.val[t][n])})).add(i.val[t][0])})):null):null):null},lineqs:function(n,t,e){var r=M.Q();return(Nn(n,E)||qn(n)||An(n))&&(!Nn(n,E)||n.nr&&n.nc)&&(Nn(n,E)||n.length)?(Nn(t,E)||qn(t)||An(t)||(t=Dn(Nn(n,E)?n.nr:n.length,function(){return t||0})),function(t,e,r){var n,i,u,l,s,o,m,c,a,f,h,d;if(Nn(t,E)||(t=E(M.Q(),t)),!t.nr||!t.nc||t.ring!==M.Q())return null;for(e=E(t.ring,e).col(0),u=t.nc,l=t.nr,On(r=r||"x")?r=Dn(u,function(n){return r+"_"+(n+1)}):qn(r)&&u>r.length&&(r=r.concat(Dn(u-r.length,function(n){return r[r.length-1].split("_")[0]+"_"+(r.length+n+1)}))),i=[],n=Dn(l,function(n){return y.LTE(N(t.row(n).map(function(n,t){return C(S(r[t]),n)})),N(e[n]))}).slice(),s=u-1;0<=s;s--)if(c=[],a=[],f=[],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)?a.push(n.div(t)):f.push(n)}),c.length&&a.length){for(m=c.length*a.length+f.length,n=new Array(m),o=0;o<m;o++)if(o<f.length){if(f[o].isConst()&&f[o].lt(0))return null;n[o]=y.LTE(N(),f[o])}else{if(h=Q.floor((o-f.length)/a.length),d=(o-f.length)%a.length,c[h].isConst()&&a[d].isConst()&&c[h].lt(a[d]))return null;n[o]=y.LTE(a[d],c[h])}i.unshift([y.LTE(x.MAX(a),N(S(r[s]))),y.LTE(N(S(r[s])),x.MIN(c))])}else{for(m=f.length,n=new Array(m),o=0;o<m;o++){if(f[o].isConst()&&f[o].lt(0))return null;n[o]=y.LTE(N(),f[o])}(c.length||a.length)&&i.unshift(c.length?[y.LTE(N(S(r[s])),x.MIN(c))]:a.length?[y.LTE(x.MAX(a),N(S(r[s])))]:[])}return i}(n,t=Nn(t,E)?t:r.cast(t),e)):null},groebner:function(t){var n,e,r,i,u,l,s,o,m,c,a,f,h,d,g,_,v=J.Arithmetic,b=w;if(1<(t=t.map(function(n){return n.monic()})).length){for(b=t[0][X],n=j(t.length,2).mapTo(function(n){return[t[n[0]],t[n[1]]]});;){for(r=[];n.hasNext();)a=(_=n.next())[0],i=_[1],f=i,_=g=d=h=void 0,h=(a=a)[X],d=a.ltm(),g=f.ltm(),_=h.Term.lcm(d,g),(f=a.mul(h([_.div(d)],a.symbol)).sub(f.mul(h([_.div(g)],f.symbol))).multimod(t)).equ(v.O)||-1===Jt(f=f.monic(),r)&&-1===Jt(f,t)&&r.push(f);if(n.dispose(!0),!r.length)break;n=1===(e=r).length?L(t.length,e.length).mapTo(function(n){return[t[n[0]],e[n[1]]]}):T([L(t.length,e.length).mapTo(function(n){return[t[n[0]],e[n[1]]]}),j(e.length,2).mapTo(function(n){return[e[n[0]],e[n[1]]]})]),t=t.concat(e)}for(c=t.map(function(n){return n.ltm(!0)});c.length;){for(s=!1,u=0,l=c.length;u<l;u++)if(m=c[u],(o=c.slice(0,u).concat(c.slice(u+1))).length&&m.multimod(o).equ(v.O)){c=o,t.splice(u,1),s=!0;break}if(!s)break}for(u=0,l=t.length;u<l;u++)i=t[u],(o=t.slice(0,u).concat(t.slice(u+1))).length&&(t[u]=i.multimod(o));t=t.sort(function(n,t){return b.Term.cmp(t.ltm(),n.ltm(),!0)})}return t},dotp:function(n,t){var e=J.Arithmetic;return(qn(n)||An(n))&&(qn(t)||An(t))?Ut(n,t,e):e.O},orthogonalize:function(n){return(qn(n)||An(n))&&n.length?function(n){if(!n.length)return[];var t,e,r,i,u,l,s,o,m,c,a=J.Arithmetic,f=n.length,h=new Array(f),d=new Array(f);if(Nn(n[0][0],_))for(t=n[0][0][X].gcd||Nt,l=0;l<f;l++){for(i=n[l],h[l]=e=i.slice(),m=e.length,s=0;s<l;s++)for(u=Ut(i,r=h[s],a),o=0;o<m;o++)e[o]=d[s].mul(e[o]).sub(u.mul(r[o]));if((c=t(e)).gt(a.I))for(o=0;o<m;o++)e[o]=e[o].div(c);d[l]=Ut(e,e,a)}else for(t=Nt,l=0;l<f;l++){for(i=n[l],h[l]=e=i.slice(),m=e.length,s=0;s<l;s++)for(u=Ut(i,r=h[s],a),o=0;o<m;o++)e[o]=a.sub(a.mul(d[s],e[o]),a.mul(u,r[o]));if(c=t(e),a.gt(c,a.I))for(o=0;o<m;o++)e[o]=a.div(e[o],c);d[l]=Ut(e,e,a)}return h}(n):[]}},J.Util={array:Dn,operate:En,unique:function(n,t,e){null==t&&(t=0),null==e&&(e=n.length-1);var r,i,u,l,s=e-t+1;if(s<=1)return 1==s?[n[t]]:[];for(r=c(),u=new Array(s),l=0;t<=e;)r[i=String(n[t])]||(u[l++]=n[t],r[i]=1),t++;return u.length>l&&(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=u<i?-1:1,m=s<l?-1:1,c=o*(u-i)+1,a=m*(s-l)+1,f=i,h=l,d=0;if(null==n&&(n=new Array(Q.min(c,a))),0===n.length)return n;for(;0<=o*(u-f)&&0<=m*(s-h);)1===r&&t[f]<e[h]||-1===r&&t[f]>e[h]?f+=o:(1===r&&t[f]>e[h]||-1===r&&t[f]<e[h]||(n[d++]=t[f],f+=o),h+=m);return d<n.length&&(n.length=d),n},difference:Gn,multi_difference:function(n,t,e,r,i,u,l,s){null==i&&(i=0),null==u&&(u=e.length-1),null==l&&(l=0),null==s&&(s=r?r.length-1:-1);var o=u<i?-1:1,m=s<l?-1:1,c=o*(u-i)+1,a=i,f=l,h=0;if(!r||!r.length)return e?e.slice():e;for(null==n&&(n=new Array(c));0<=o*(u-a)&&0<=m*(s-f);)e[a]===r[f]?1<t[e[a]]?t[e[a]]--:(a+=o,f+=m):e[a]>r[f]?f+=m:(n[h++]=e[a],t[e[a]]--,a+=o);for(;0<=o*(u-a);)0<t[e[a]]&&(n[h++]=e[a]),t[e[a]]--,a+=o;return h<n.length&&(n.length=h),n},union:zn,bsearch:function(n,t,e,r,i,u,l){u=u||function(n,t){return n==t},l=l||function(n,t){return n<t},e=-1===e?-1:1,null==r&&(r=0),null==i&&(i=t.length-1);var s,o,m=Q.max(r,0),c=Q.min(i,t.length-1);if(c<m||l(n,t[m])||l(t[c],n))return-1;if(u(n,t[m]))return m;if(u(n,t[c]))return c;if(-1===e)for(;m<c;){if(u(n,o=t[s=m+c>>>1]))return s;l(o,n)?c=s-1:m=s+1}else for(;m<c;){if(u(n,o=t[s=m+c>>>1]))return s;l(n,o)?c=s-1:m=s+1}return-1},bisect:Kn,complementation:Pn,reflection:kn,reversion:$n,gray:Ln,igray:jn,grayn:Un,igrayn:Jn,finitedifference:Fn,partialsum:Xn,convolution:function(n,t,e){var r,i,u,l=n.length,s=t.length;if(!0===e)for(u=Dn(l+s-1,function(){return 0}),r=0;r<l;r++)for(i=0;i<s;i++)u[r+i]=0===u[r+i]?n[r].mul(t[i]):u[r+i].add(n[r].mul(t[i]));else if(e)for(u=Dn(l+s-1,function(){return e.O}),r=0;r<l;r++)for(i=0;i<s;i++)u[r+i]=e.add(u[r+i],e.mul(n[r],t[i]));else for(u=Dn(l+s-1,function(){return 0}),r=0;r<l;r++)for(i=0;i<s;i++)u[r+i]+=n[r]*t[i];return u},summation:function(t,e,r,n){var i=t.length,u=e.length;return n=Dn(Q.max(i,u),!0===r?n?function(n){return i<=n?e[n].neg():u<=n?t[n]:t[n].sub(e[n])}:function(n){return i<=n?e[n]:u<=n?t[n]:t[n].add(e[n])}:r?n?function(n){return i<=n?r.neg(e[n]):u<=n?t[n]:r.sub(t[n],e[n])}:function(n){return i<=n?e[n]:u<=n?t[n]:r.add(t[n],e[n])}:n?function(n){return i<=n?-e[n]:u<=n?t[n]:t[n]-e[n]}:function(n){return i<=n?e[n]:u<=n?t[n]:t[n]+e[n]})},wheel:function(){var t,n,e,r,i,u=arguments.length&&qn(arguments[0])?arguments[0]:arguments,l=u.length;if(!l||!u[0])return null;for(i=1,e=0;e<l;e++)i*=u[e];for(t=[],i+=1,n=u[0];n<=i;n++){for(r=!0,e=0;e<l;e++)if(!(n%u[e])){r=!1;break}r&&t.push(n)}return[t,Dn(t.length,function(n){return n+1<t.length?t[n+1]-t[n]:t[0]+i-1-t[n]})]},sort:Wn,shuffle:Bn,pick:Hn,pluck:Tn,is_mirror_image:function(n){var t,e;if(qn(n)||An(n)){if(n.length<=1)return!0;for(t=0,e=n.length-1;t<e;t++,e--)if(n[t]!==n[e])return!1}else{if((n=String(n)).length<=1)return!0;for(t=0,e=n.length-1;t<e;t++,e--)if(n.charAt(t)!==n.charAt(e))return!1}return!0},cycle_detection:Ct},J.BitArray=n({constructor:function n(t){if(!Nn(this,n))return new n(t);this.length=t,this.bits=new Uint32Array(Q.ceil(t/32))},length:0,bits:null,dispose:function(){return this.length=null,this.bits=null,this},clone:function(){var n=new J.BitArray(this.length);return n.bits=new Uint32Array(this.bits),n},fromArray:function(n){return this.bits=new Uint32Array(n),this},toArray:function(){return G.call(this.bits)},toString:function(){return this.toArray().map(Rn).join("")},reset:function(){for(var n=this.bits,t=n.length,e=0;e<t;e++)n[e]=0;return this},isset:function(n){return!!(this.bits[n>>>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}}),b=J.Node=function n(t,e,r,i){var u=this;if(!Nn(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=J.Heap=n({constructor:function n(t,e,r){var i=this;if(!Nn(i,n))return new n(t,e,r);e=String(e||"min").toLowerCase().slice(0,3),i.type="max"===e?"max":"min",Sn(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<t?-1:t<n?1:0},heapify:function(n,t,e){var r,i=n.length;if(e=e||g.CMP,"max"===t)for(r=(i>>>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<e&&r(l,u=n[i=e-1>>>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<i;)(r=s+1)<i&&0<=e(n[s],n[r])&&(s=r),n[t]=n[s],s=2*(t=s)+1;n[t]=l,g._siftdown(n,u,t,e)},_siftdown_max:function(n,t,e,r){for(var i,u,l=n[e];t<e&&r(u=n[i=e-1>>>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<i;)(r=s+1)<i&&0<=e(n[r],n[s])&&(s=r),n[t]=n[s],s=2*(t=s)+1;n[t]=l,g._siftdown_max(n,u,t,e)}},_h:null,type:"min",cmp:null,dispose:function(){return this._h=null,this.cmp=null,this},peek:function(){var n=this._h;return n.length?n[0]:null},push:function(n){var t=this;return t._h.push(n),"max"===t.type?g._siftdown_max(t._h,0,t._h.length-1,t.cmp):g._siftdown(t._h,0,t._h.length-1,t.cmp),t},pop:function(){var n,t=this,e=t._h.pop();return t._h.length?(n=t._h[0],t._h[0]=e,"max"===t.type?g._siftup_max(t._h,0,t.cmp):g._siftup(t._h,0,t.cmp),n):e},replace:function(n){var t=this,e=t.peek();return t._h[0]=n,"max"===t.type?g._siftup_max(t._h,0,t.cmp):g._siftup(t._h,0,t.cmp),e}}),_=n(r({constructor:function(){},dispose:function(){return this},clone:function(){return 0+this},valueOf:function(){return 0},toString:function(){return""},toTex:function(){return this.toString()}},{isReal:function(){return!0},isImag:function(){return!1},equ:function(n){return Nn(n,_)?n.equ(this):On(n)?String(this)===n:this===n},gt:function(n){return wn(n)?n<this:!!Nn(n,_)&&n.lt(this)},gte:function(n){return wn(n)?n<=this:!!Nn(n,_)&&n.lte(this)},lt:function(n){return wn(n)?this<n:!!Nn(n,_)&&n.gt(this)},lte:function(n){return wn(n)?this<=n:!!Nn(n,_)&&n.gte(this)},real:function(){return this},imag:function(){return 0},abs:function(){return Q.abs(this)},neg:function(){return-this},conj:function(){return this},inv:yn,add:function(n){return Nn(n,_)?n.add(this):this+n},sub:function(n){return Nn(n,_)?n.neg().add(this):this-n},mul:function(n){return Nn(n,_)?n.mul(this):this*n},div:function(n){return Nn(n,a)?n[X](this).div(n):Nn(n,_)?null:Q.floor(this/n)},mod:function(n){return Nn(n,a)?n[X](this).mod(n):Nn(n,_)?null:this%n},divmod:function(n){return[this.div(n),this.mod(n)]},divides:function(n){return 0!==this&&(wn(n)?0==n%this:Nn(n,Z)?n.mod(this).equ(0):!!Nn(n,a))},pow:function(n){return Q.pow(this,+n)},rad:function(n){return ct(this,n)}})),a=n(_,{constructor:function(){},clone:function(){return new this[X](this)},isConst:function(){return!0},isInt:function(){return!1},real:function(){return this},imag:function(){return this[X].Zero()}}),f=n(_,{constructor:function(){},clone:function(){return new this[X](this)},isConst:function(){return!1},isInt:function(){return!1},c:function(){return 0},valueOf:function(){return this.c().valueOf()},gt:yn,gte:yn,lt:yn,lte:yn,real:function(){return this},imag:function(){return this[X].Zero()},abs:yn,neg:yn,conj:yn,inv:yn,add:yn,sub:yn,mul:yn,div:yn,mod:yn,divmod:yn,pow:yn,rad:yn,d:yn,evaluate:yn}),o=n(f,{constructor:function(){}}),(Z=J.Integer=n(a,{constructor:function n(t){var e=J.Arithmetic;if(!Nn(this,n))return new n(t);Nn(t,f)&&(t=t.c()),Nn(t,v)&&(t=t.real()),Nn(t,p)&&(t=t.integer(!0)),Nn(t,n)&&(this._isp=t._isp),Nn(t,[n,m])&&(t=t.num),this.num=e.num(t||0)},__static__:{O:null,I:null,J:null,Zero:function(){return null==Z.O&&(Z.O=Z(J.Arithmetic.O)),Z.O},One:function(){return null==Z.I&&(Z.I=Z(J.Arithmetic.I)),Z.I},MinusOne:function(){return null==Z.J&&(Z.J=Z(J.Arithmetic.J)),Z.J},hasInverse:function(){return!1},cast:null,gcd:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;return Z(Nt(Dn(t.length,function(n){return t[n].num})))},xgcd:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;if(t.length)return Mt(Dn(t.length,function(n){return t[n].num})).map(function(n){return Z(n)})},lcm:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;return Z(Zt(Dn(t.length,function(n){return t[n].num})))},max:Te,min:Pe,rnd:function(n,t){var e,r=J.Arithmetic;return n=Z.cast(n),(t=Z.cast(t)).lt(n)&&(e=n,n=t,t=e),n.equ(t)?n:Z(r.rnd(n.num,t.num))},fromString:function(n){return(n=H(String(n))).length?("+"===n.charAt(0)&&(n=H(n.slice(1))),-1!==n.indexOf("e")||-1!==n.indexOf(".")?Z(p.fromString(n)):n.length?Z(J.Arithmetic.num(n)):Z.Zero()):Z.Zero()}},num:null,_n:null,_isp:null,_str:null,dispose:function(){var n=this;return n._n&&n===n._n._n&&(n._n._n=null),n.num=null,n._n=null,n._str=null,n},isInt:function(){return!0},isPrime:function(){var n=this,t=J.Arithmetic;return null==n._isp&&(n._isp=qt(t.abs(n.num))&&It(t.abs(n.num))),n._isp},equ:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?t.equ(this.num,n.num):Nn(n,_)?n.equ(this.num):t.isNumber(n)?t.equ(this.num,n):!!On(n)&&n===this.toString()},gt:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?t.gt(this.num,n.num):Nn(n,_)?n.lt(this.num):!!t.isNumber(n)&&t.gt(this.num,n)},gte:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?t.gte(this.num,n.num):Nn(n,_)?n.lte(this.num):!!t.isNumber(n)&&t.gte(this.num,n)},lt:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?t.lt(this.num,n.num):Nn(n,_)?n.gt(this.num):!!t.isNumber(n)&&t.lt(this.num,n)},lte:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?t.lte(this.num,n.num):Nn(n,_)?n.gte(this.num):!!t.isNumber(n)&&t.lte(this.num,n)},abs:function(){return Z(J.Arithmetic.abs(this.num))},neg:function(){var n=this;return null==n._n&&(n._n=Z(J.Arithmetic.neg(n.num)),n._n._n=n),n._n},inv:yn,add:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?Z(t.add(this.num,n.num)):Nn(n,_)?n.add(this.num):t.isNumber(n)?Z(t.add(this.num,n)):this},sub:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?Z(t.sub(this.num,n.num)):Nn(n,_)?n.neg().add(this.num):t.isNumber(n)?Z(t.sub(this.num,n)):this},mul:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?Z(t.mul(this.num,n.num)):Nn(n,_)?n.mul(this.num):t.isNumber(n)?Z(t.mul(this.num,n)):this},div:function(n){var t=this,e=J.Arithmetic;return Nn(n,[Z,m])?Z(e.div(t.num,n.num)):Nn(n,v)?v(t).div(n):Nn(n,p)?p(t).div(n):e.isNumber(n)?Z(e.div(t.num,n)):t},mod:function(n){var t=this,e=J.Arithmetic;return Nn(n,[Z,m])?Z(e.mod(t.num,n.num)):Nn(n,v)?v(t).mod(n):Nn(n,p)?p(t).mod(n):e.isNumber(n)?Z(e.mod(t.num,n)):t},divmod:function(n){return[this.div(n),this.mod(n)]},divides:function(n){var t=J.Arithmetic,e=t.O;return!t.equ(e,this.num)&&(Nn(n,Z)?t.equ(e,t.mod(n.num,this.num)):!!Nn(n,_)||!!t.isNumber(n)&&t.equ(e,t.mod(t.num(n),this.num)))},integer:function(n){return!0===n?this.num:this},pow:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).lt(t.O)?null:n.equ(t.I)?this:Z(t.pow(this.num,n.num))},rad:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).lt(t.I)?null:n.equ(t.I)?this:Z(at(this.num,n.num))},valueOf:function(){return J.Arithmetic.val(this.num)},toString:function(){return null==this._str&&(this._str=String(this.num)),this._str},toDec:function(n){var t=this.toString();return wn(n)&&0<n&&(t+="."+new Array(n+1).join("0")),t}})).cast=ke([Z],function(n){return On(n)?Z.fromString(n):new Z(n)}),(m=J.IntegerMod=n(a,{constructor:function n(t,e,r){var i=this,u=J.Arithmetic;if(!Nn(i,n))return new n(t,e,r);if(Nn(t,f)&&(t=t.c()),Nn(t,v)&&(t=t.real()),Nn(t,p)&&(t=t.integer(!0)),Nn(t,Z)&&(t=t.num),Nn(t,n)&&(r=null==e?t._simpl:r,e=e||t.m,t=t.num),e=Z.cast(e),t=u.num(t||0),e.equ(u.O))throw new Error("Zero modulus in Abacus.IntegerMod!");i.num=t,i.m=e,r?i._simpl=!0:i.simpl()},__static__:{Zero:function(n){return m(J.Arithmetic.O,n,!0)},One:function(n){return m(J.Arithmetic.I,n)},MinusOne:function(n){return m(J.Arithmetic.J,n)},hasInverse:function(){return!0},cast:null,gcd:function(){for(var n=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,t=J.Arithmetic.O,e=null,r=n.length,i=0;i<r;i++)n[i].equ(t)||null!=e&&!n[i].lt(e)||(e=n[i]);return null==e?n[0]:e},xgcd:function(){var n,t=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments),e=J.Arithmetic.O,r=-1,i=null,u=t.length;if(t.length){for(n=0;n<u;n++)t[n].equ(e)||null!=i&&!t[n].lt(i)||(i=t[n],r=n);return Dn(t.length+1,null==i?function(n){return 0===n?t[0]:1===n?m.One(t[0].m):m.Zero(t[0].m)}:function(n){return 0===n?i:r+1===n?m.One(t[0].m):m.Zero(t[0].m)})}},lcm:function(){var n,t,e=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,r=e.length,i=J.Arithmetic.O;if(r<=1)return 1===r?e[0]:m.Zero(2);if(e[0].equ(i)||e[1].equ(i))return m.Zero(e[0].m);for(t=Te(e[0],e[1]),n=2;n<r;n++){if(e[n].equ(i))return m.Zero(e[0].m);t=Te(t,e[n])}return t},max:Te,min:Pe,rnd:function(n,t,e){var r,i=J.Arithmetic;return e=Z.cast(e),n=Z.cast(n),t=Z.cast(t),n.lt(0)&&(n=Z.Zero()),n.gte(e)&&(n=e.sub(1)),t.lt(0)&&(t=Z.Zero()),t.gte(e)&&(t=e.sub(1)),t.lt(n)&&(r=n,n=t,t=r),n.equ(t)?m(n.num,e,!0):m(i.rnd(n.num,t.num),e,!0)},fromString:function(n,t){return(n=H(String(n))).length?("+"===n.charAt(0)&&(n=H(n.slice(1))),-1!==n.indexOf("e")||-1!==n.indexOf(".")?m(p.fromString(n),t):n.length?m(J.Arithmetic.num(n),t):m.Zero(t)):m.Zero(t)}},num:null,m:null,_n:null,_i:null,_str:null,_simpl:!1,dispose:function(){var n=this;return n._n&&n===n._n._n&&(n._n._n=null),n._i&&n===n._i._i&&(n._i._i=null),n.num=null,n.m=null,n._n=null,n._i=null,n._str=null,n},isInt:function(){return!0},equ:function(n){var t=this,e=J.Arithmetic;return Nn(n,[m,Z])?e.equ(t.num,t.wrap(n.num)):Nn(n,_)?n.equ(t.num):e.isNumber(n)?e.equ(t.num,t.wrap(e.num(n))):!!On(n)&&n===t.toString()},gt:function(n){var t=J.Arithmetic;return Nn(n,[m,Z])?t.gt(this.num,n.num):Nn(n,_)?n.lt(this.num):!!t.isNumber(n)&&t.gt(this.num,n)},gte:function(n){var t=J.Arithmetic;return Nn(n,[m,Z])?t.gte(this.num,n.num):Nn(n,_)?n.lte(this.num):!!t.isNumber(n)&&t.gte(this.num,n)},lt:function(n){var t=J.Arithmetic;return Nn(n,[m,Z])?t.lt(this.num,n.num):Nn(n,_)?n.gt(this.num):!!t.isNumber(n)&&t.lt(this.num,n)},lte:function(n){var t=J.Arithmetic;return Nn(n,[m,Z])?t.lte(this.num,n.num):Nn(n,_)?n.gte(this.num):!!t.isNumber(n)&&t.lte(this.num,n)},abs:function(){return this},neg:function(){var n=this;return null==n._n&&(n._n=m(rt(n.num,n.m.num),n.m,!0),n._n._n=n),n._n},inv:function(){var n=this;return null==n._i&&(n._i=m(lt(n.num,n.m.num),n.m,!0),n._i._i=n),n._i},add:function(n){var t=this,e=J.Arithmetic;return Nn(n,[m,Z])?m(it(t.num,n.num,t.m.num),t.m,!0):Nn(n,_)?n.add(t.num):e.isNumber(n)?m(it(t.num,e.num(n),t.m.num),t.m,!0):t},sub:function(n){var t=J.Arithmetic;return Nn(n,[m,Z])||t.isNumber(n)?this.add(m(n,this.m).neg()):Nn(n,_)?n.neg().add(this.num):this},mul:function(n){var t=this,e=J.Arithmetic;return Nn(n,[m,Z])?m(ut(t.num,n.num,t.m.num),t.m,!0):Nn(n,_)?n.mul(t.num):e.isNumber(n)?m(ut(t.num,e.num(n),t.m.num),t.m,!0):t},div:function(n){var t=this,e=J.Arithmetic;return Nn(n,[m,Z])||e.isNumber(n)?t.mul(m(n,t.m).inv()):Nn(n,v)?v(t).div(n):Nn(n,p)?p(t).div(n):t},mod:function(n){var t=this,e=J.Arithmetic;return Nn(n,[m,Z])?m(e.mod(t.num,n.num),t.m):Nn(n,v)?v(t).mod(n):Nn(n,p)?p(t).mod(n):e.isNumber(n)?m(e.mod(t.num,n),t.m):t},divmod:function(n){return[this.div(n),this.mod(n)]},divides:function(n){var t=J.Arithmetic,e=t.O;return!t.equ(e,this.num)&&(!(!Nn(n,m)||!this.m.isPrime())||(Nn(n,Z)?t.equ(e,t.mod(n.num,this.num)):!!Nn(n,_)||!!t.isNumber(n)&&t.equ(e,t.mod(t.num(n),this.num))))},integer:function(n){return!0===n?this.num:this},pow:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).lt(t.O)?null:n.equ(t.I)?this:m(st(this.num,n.num,this.m.num),this.m,!0)},rad:function(n){var t,e,r,i=J.Arithmetic;return(n=Z.cast(n)).lt(i.I)?null:n.equ(i.I)?this:m((t=this.num,e=n.num,r=this.m.num,(i=J.Arithmetic).O,n=i.I,st(t,Mt(e,i.sub(r,n))[1],r)),this.m,!0)},wrap:function(n){var t=this.m.num,e=J.Arithmetic;return n=e.mod(n,t),e.lt(n,e.O)&&(n=e.add(n,t)),n},simpl:function(){var n=this;J.Arithmetic;return n._simpl||(n.num=n.wrap(n.num),n._simpl=!0),n},valueOf:function(){return J.Arithmetic.val(this.num)},toString:function(){return null==this._str&&(this._str=String(this.num)),this._str},toDec:function(n){var t=this.toString();return wn(n)&&0<n&&(t+="."+new Array(n+1).join("0")),t}})).cast=function(n,t){return t=Z.cast(t),ke(function(n){return Nn(n,m)&&t.equ(n.m)},function(n){return On(n)?m.fromString(n,t):new m(n,t)})(n)},(p=J.Rational=n(a,{constructor:function n(){var t,e,r=this,i=arguments,u=n.autoSimplify,l=J.Arithmetic,s=l.O,o=l.I;if(i.length&&(qn(i[0])||An(i[0]))&&(i=i[0]),e=2<i.length&&!0===i[2],i=1<i.length?(t=i[0],i[1]):1===i.length?(t=i[0],null):t=null,!Nn(r,n))return new n(t,i,e);if(Nn(t,f)&&(t=t.c()),Nn(i,f)&&(i=i.c()),Nn(t,[Z,m])&&(t=t.num),Nn(i,[Z,m])&&(i=i.num),Nn(t,v)&&(t=t.real()),Nn(t,n)&&(e=t._simpl,i=t.den,t=t.num),null==i&&(i=o),null==t&&(t=s),t=l.num(t),i=l.num(i),l.equ(s,i))throw new Error("Zero denominator in Abacus.Rational!");r.num=l.abs(t),r.den=l.abs(i),l.equ(s,r.num)&&(r.den=o),(l.lt(s,t)&&l.gt(s,i)||l.lt(s,i)&&l.gt(s,t))&&(r.num=l.neg(r.num)),e?r._simpl=!0:u&&r.simpl()},__static__:{autoSimplify:!0,O:null,I:null,J:null,Zero:function(){return null==p.O&&(p.O=p(J.Arithmetic.O,J.Arithmetic.I,!0)),p.O},One:function(){return null==p.I&&(p.I=p(J.Arithmetic.I,J.Arithmetic.I,!0)),p.I},MinusOne:function(){return null==p.J&&(p.J=p(J.Arithmetic.J,J.Arithmetic.I,!0)),p.J},EPS:null,Epsilon:function(n){return null!=n?p.EPS=!0===n?p.fromString(1e-6.toString()):p.fromString(n.toString()):null==p.EPS&&(p.EPS=p.fromString(1e-6.toString())),p.EPS},hasInverse:function(){return!0},cast:null,gcd:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,e=J.Arithmetic,r=En(function(n,t){return e.mul(n,t.den)},e.I,t);return p(Nt(Dn(t.length,function(n){return e.mul(e.div(r,t[n].den),t[n].num)})),r)},xgcd:function(){var e,t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,r=J.Arithmetic,i=r.I;if(t.length)return e=En(function(n,t){return r.mul(n,t.den)},i,t),Mt(Dn(t.length,function(n){return r.mul(r.div(e,t[n].den),t[n].num)})).map(function(n,t){return 0===t?p(n,e):p(n,i,!0)})},lcm:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,e=J.Arithmetic,r=En(function(n,t){return e.mul(n,t.den)},e.I,t);return p(Zt(Dn(t.length,function(n){return e.mul(e.div(r,t[n].den),t[n].num)})),r)},max:Te,min:Pe,rnd01:function(n){var t,e,r,i,u=J.Arithmetic.II;for(null==n&&(n=15),n=J.Math.rndInt(0,Q.abs(+n)),t=0,e=p.Zero(),r=p.One();t<n&&e.lte(r);)i=r.add(e).div(u),J.Math.rnd()<.5?r=i:e=i,t++;return e},rnd:function(n,t,e){var r;return n=p.cast(n),(t=p.cast(t)).lt(n)&&(r=n,n=t,t=r),n.equ(t)?n:n.add(p.rnd01(e).mul(t.sub(n)))},fromIntRem:function(n,t,e){var r=J.Arithmetic;return n=r.num(n),t=r.num(t),e=r.num(e),p(r.add(t,r.mul(n,e)),e)},fromContFrac:function(n){var t,e,r=J.Arithmetic,i=r.O,u=r.I,l=i;if(qn(n))for(e=n.length-1;0<=e;)t=u,u=l,l=t,u=r.add(u,r.mul(l,n[e--]));return r.equ(i,l)?null:p(u,l)},fromDec:function(n){n=function(n,t){var e,r,i,u,l,s,o,m,c=J.Arithmetic,a=c.O,f=c.I,h=c.num,d=!1,g=null,_=null;if(!(u=(n=H(String(n))).match(tn)))return null;if(u[1]&&(d=!0),e=h(u[2]),o=[a,f],n=h(10),!u[3]||!u[4]&&!u[5])return o[0]=d?c.neg(e):e,u[6]&&(s=h(u[6].slice(1)),c.lt(s,a)?o[1]=c.pow(n,c.neg(s)):o[0]=c.mul(o[0],c.pow(n,s))),o;if(u[4]&&(g=u[4]),u[5]){for(m=!0,l=(_=u[5].slice(1,-1)).length-1;0<=l;l--)if("0"!==_.charAt(l)){m=!1;break}m&&(_=null)}if(_){if(g){for(;g.length>=_.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):f),r=c.add(c.mul(i,e),c.sub(h((g||"")+_),g?h(g):a))}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=f,e),u[6]&&(s=h(u[6].slice(1)),c.lt(s,a)?i=c.mul(i,c.pow(n,c.neg(s))):r=c.mul(r,c.pow(n,s)))}return!1!==t&&(t=Nt(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=J.Arithmetic,u="+",l=p.Zero();if(!(n=H(String(n))).length)return l;if("+"!==n.charAt(0)&&"-"!==n.charAt(0)||(u=n.charAt(0),n=H(n.slice(1))),!n.length)return l;if("("===n.charAt(0)&&")"===n.charAt(n.length-1)&&(n=H(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<n.length?i.num(n[1]):i.I;return"-"===u&&(e=i.neg(e)),p(e,r)}},num:null,den:null,_n:null,_i:null,_str:null,_strp:null,_tex:null,_cfr:null,_dec:null,_int:null,_rem:null,_simpl:!1,dispose:function(){var n=this;return n._n&&n===n._n._n&&(n._n._n=null),n._i&&n===n._i._i&&(n._i._i=null),n.num=null,n.den=null,n._n=null,n._i=null,n._str=null,n._strp=null,n._tex=null,n._cfr=null,n._dec=null,n._int=null,n._rem=null,n._simpl=null,n},isInt:function(){var n=J.Arithmetic;return this._simpl?n.equ(n.I,this.den):n.equ(n.O,n.mod(this.num,this.den))},equ:function(n,t){var e=this,r=J.Arithmetic;return Nn(n,p)?!0===t?r.equ(e.num,n.num)&&r.equ(e.den,n.den):r.equ(r.mul(e.num,n.den),r.mul(n.num,e.den)):Nn(n,[Z,m])?!0===t?r.equ(e.num,n.num)&&r.equ(e.den,r.I):r.equ(e.num,r.mul(n.num,e.den)):Nn(n,_)?n.equ(e):r.isNumber(n)?!0===t?r.equ(e.num,n)&&r.equ(e.den,r.I):r.equ(e.num,r.mul(e.den,n)):!!On(n)&&(n===e.toString()||n===e.toTex()||n===e.toDec())},gt:function(n){var t=this,e=J.Arithmetic;return Nn(n,p)?e.gt(e.mul(t.num,n.den),e.mul(n.num,t.den)):Nn(n,[Z,m])?e.gt(t.num,e.mul(n.num,t.den)):Nn(n,_)?n.lt(t):!!e.isNumber(n)&&e.gt(t.num,e.mul(t.den,n))},gte:function(n){var t=this,e=J.Arithmetic;return Nn(n,p)?e.gte(e.mul(t.num,n.den),e.mul(n.num,t.den)):Nn(n,[Z,m])?e.gte(t.num,e.mul(n.num,t.den)):Nn(n,_)?n.lte(t):!!e.isNumber(n)&&e.gte(t.num,e.mul(t.den,n))},lt:function(n){var t=this,e=J.Arithmetic;return Nn(n,p)?e.lt(e.mul(t.num,n.den),e.mul(n.num,t.den)):Nn(n,[Z,m])?e.lt(t.num,e.mul(n.num,t.den)):Nn(n,_)?n.gt(t):!!e.isNumber(n)&&e.lt(t.num,e.mul(t.den,n))},lte:function(n){var t=this,e=J.Arithmetic;return Nn(n,p)?e.lte(e.mul(t.num,n.den),e.mul(n.num,t.den)):Nn(n,[Z,m])?e.lte(t.num,e.mul(n.num,t.den)):Nn(n,_)?n.gte(t):!!e.isNumber(n)&&e.lte(t.num,e.mul(t.den,n))},abs:function(){var n=J.Arithmetic;return p(n.abs(this.num),this.den,this._simpl)},neg:function(){var n=this,t=J.Arithmetic;return null==n._n&&(n._n=p(t.neg(n.num),n.den,n._simpl),n._n._n=n),n._n},inv:function(){var n=this;return null==n._i&&(n._i=p(n.den,n.num,n._simpl),n._i._i=n),n._i},rev:function(){return this.inv()},add:function(n){var t=this,e=J.Arithmetic;if(Nn(n,v)){if(!n.isReal())return n.add(t);n=n.real()}return Nn(n,p)?e.equ(t.den,n.den)?p(e.add(t.num,n.num),t.den):p(e.add(e.mul(t.num,n.den),e.mul(n.num,t.den)),e.mul(t.den,n.den)):Nn(n,[Z,m])?e.equ(t.den,e.I)?p(e.add(t.num,n.num),t.den):p(e.add(t.num,e.mul(t.den,n.num)),t.den):Nn(n,_)?n.add(t):e.isNumber(n)?e.equ(t.den,e.I)?p(e.add(t.num,n),t.den):p(e.add(t.num,e.mul(t.den,n)),t.den):t},sub:function(n){var t=this,e=J.Arithmetic;if(Nn(n,v)){if(!n.isReal())return v(t).sub(n);n=n.real()}return Nn(n,p)?e.equ(t.den,n.den)?p(e.sub(t.num,n.num),t.den):p(e.sub(e.mul(t.num,n.den),e.mul(n.num,t.den)),e.mul(t.den,n.den)):Nn(n,[Z,m])?e.equ(t.den,e.I)?p(e.sub(t.num,n.num),t.den):p(e.sub(t.num,e.mul(t.den,n.num)),t.den):Nn(n,_)?n.neg().add(t):e.isNumber(n)?e.equ(t.den,e.I)?p(e.sub(t.num,n),t.den):p(e.sub(t.num,e.mul(t.den,n)),t.den):t},mul:function(n){var t=this,e=J.Arithmetic;if(Nn(n,v)){if(!n.isReal())return n.mul(t);n=n.real()}return Nn(n,p)?p(e.mul(t.num,n.num),e.mul(t.den,n.den)):Nn(n,[Z,m])?p(e.mul(t.num,n.num),t.den):Nn(n,_)?n.mul(t):e.isNumber(n)?p(e.mul(t.num,n),t.den):t},div:function(n){var t=this,e=J.Arithmetic;if(Nn(n,v)){if(!n.isReal())return v(t).div(n);n=n.real()}return Nn(n,R)?n.inv().mul(t):Nn(n,p)?p(e.mul(t.num,n.den),e.mul(t.den,n.num)):Nn(n,[Z,m])?p(t.num,e.mul(t.den,n.num)):e.isNumber(n)?p(t.num,e.mul(t.den,n)):t},mod:function(n,t){var e=this,r=J.Arithmetic;return Nn(n,v)&&(n=n.real()),Nn(n,[p,Z,m])?e.sub(n.mul(Nn(t,p)?t:e.div(n).round())):r.isNumber(n)?e.sub(r.mul(n,(Nn(t,p)?t:e.div(n).round()).num)):e},divmod:function(n){var t=this.div(n).round();return[t,this.mod(n,t)]},divides:function(n){return!this.equ(J.Arithmetic.O)},pow:function(n){var t,e,r=this,i=J.Arithmetic,u=i.O,l=i.I;if(n=Z.cast(n),t=r.num,e=r.den,n.lt(u)){if(i.equ(u,t))throw new Error("Zero denominator from negative power in Abacus.Rational!");t=r.den,e=r.num,n=n.neg()}return i.equ(u,t)?p.Zero():n.equ(u)?p.One():n.equ(l)?p(t,e,r._simpl):p(i.pow(t,n.num),i.pow(e,n.num),r._simpl)},rad:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).equ(t.I)?this:this.lt(t.O)&&n.mod(t.II).equ(t.O)?v(this).rad(n):ht(this,n)},simpl:function(){var n,t=this,e=J.Arithmetic,r=e.I;return t._simpl||(e.equ(e.O,t.num)?t.den=r:e.equ(e.J,t.num)||e.equ(r,t.num)||e.equ(r,t.den)||(n=Nt(t.num,t.den),e.equ(r,n)||(t.num=e.div(t.num,n),t.den=e.div(t.den,n),t._str=null,t._strp=null,t._tex=null)),t._simpl=!0),t},round:function(n){n=!1!==n;var t=this,e=J.Arithmetic,r=n&&e.gt(e.O,t.num)?e.J:e.I;return p(e.mul(r,e.div(e.add(e.mul(n?e.abs(t.num):t.num,e.II),t.den),e.mul(t.den,e.II))),e.I,!0)},integer:function(n){var t=this,e=J.Arithmetic;return null==t._int&&(t._int=p(e.div(t.num,t.den),e.I,!0)),!0===n?t._int.num:t._int},remainder:function(n){var t=this,e=J.Arithmetic;return null==t._rem&&(t._rem=p(e.mod(t.num,t.den),e.I,!0)),!0===n?t._rem.num:t._rem},approximate:function(n){var t,e,r,i,u,l,s,o,m,c,a=this.num,f=this.den,h=null,d=null,g=J.Arithmetic,_=g.O,v=g.I;for(n=g.num(n),c=this.lt(_),a=g.abs(a),m=g.div(a,f),a=g.mod(a,f),t=_,i=r=e=v;g.lte(e,n)&&g.lte(i,n);){if(u=g.add(t,r),l=g.add(e,i),s=g.mul(a,l),o=g.mul(f,u),g.equ(s,o)){if(g.lte(l,n)){h=u,d=l;break}if(g.gt(i,e)){h=r,d=i;break}h=t,d=e;break}g.gt(s,o)?(t=u,e=l):(r=u,i=l)}return null!=h&&null!=d||(d=g.gt(e,n)?(h=r,i):(h=t,e)),new p(c?g.neg(g.add(h,g.mul(m,d))):g.add(h,g.mul(m,d)),d)},tuple:function(){return[this.num,this.den]},toContFrac:function(){var n,t,e,r,i,u=this,l=J.Arithmetic,s=l.O;if(null==u._cfr){for(n=u.num,t=u.den,i=[];!l.equ(s,t);)r=l.div(n,t),i.push(r),e=n,n=t,t=l.sub(e,l.mul(r,t));u._cfr=i}return u._cfr.slice()},toDec:function(n){var t,e,r,i,u,l,s,o=this;if(null==o._dec&&(o._dec=function(n,t){var e,r,i,u,l,s,o,m,c,a,f=J.Arithmetic,h=f.O;if(f.equ(h,t))return null;for(h=f.lt(h,n)&&f.gt(h,t)||f.lt(h,t)&&f.gt(h,n),n=f.abs(n),t=f.abs(t),e=f.div(n,t),r=f.mod(n,t),n=(h?"-":"")+String(e),u=[],o=f.num(10),s=(h=Ct(function(n){return f.mod(f.mul(o,n),t)},r,function(n,t){return f.equ(n,t)}))[l=0]+h[1];l<s;l++)i=f.mul(o,r),e=f.div(i,t),r=f.mod(i,t),u.push(String(e));if((m=u.slice(h[1]).join("")).length){for(a=!0,l=m.length-1;0<=l;l--)if("0"!==m.charAt(l)){a=!1;break}m=a?"":"["+m+"]"}if((c=u.slice(0,h[1]).join("")).length){for(a=!0,l=c.length-1;0<=l;l--)if("0"!==c.charAt(l)){a=!1;break}a&&!m.length&&(c="")}return n+(c.length||m.length?".":"")+c+m}(o.num,o.den)),wn(n)&&0<=n){if(n=Q.ceil(n),-1===(e=(t=o._dec).indexOf(".")))return 0<n?t+"."+new Array(n+1).join("0"):t;if(-1!==(u=t.indexOf("[",e+1))&&(r=t.slice(u+1,-1),t=t.slice(0,u)+r,r.length&&t.length-e-1<=n&&(t+=new Array(Q.floor((n-(t.length-e-1))/r.length)+2).join(r))),(r=t.length-e-1)<n)t+=new Array(n-r+1).join("0");else if(n<r){for(r=t.charAt(e+1+n),i=parseInt(r,10),u=(t=t.slice(0,e+1+n).split("")).length-1,l="-"===t[0]?1:0,s=5<=i,e===u&&u--;s&&l<=u;)s=9===(i=parseInt(t[u],10)),t[u]=String(s?0:i+1),e===--u&&u--;s&&t.splice(l,0,"1"),"."===t[t.length-1]&&t.pop(),t=t.join("")}return t}return o._dec},valueOf:function(){var n=J.Arithmetic;return n.val(this.num)/n.val(this.den)},toString:function(n){var t=this,e=J.Arithmetic;return null==t._str&&(t._str=String(t.num)+(e.equ(e.I,t.den)?"":"/"+String(t.den)),t._strp=e.equ(e.I,t.den)?String(t.num):(e.gt(e.O,t.num)?"-":"")+"("+String(e.abs(t.num))+"/"+String(t.den)+")"),n?t._strp:t._str},toTex:function(){var n=this,t=J.Arithmetic;return null==n._tex&&(n._tex=t.equ(t.I,n.den)?Mn(n.num):(t.gt(t.O,n.num)?"-":"")+"\\frac{"+Mn(t.abs(n.num))+"}{"+Mn(n.den)+"}"),n._tex}})).cast=ke([p],function(n){return On(n)?p.fromString(n):new p(n)}),(v=J.Complex=n(a,{constructor:function n(){var t,e=arguments;if(e.length&&(qn(e[0])||An(e[0]))&&(e=e[0]),e=1<e.length?(t=e[0],e[1]):(t=1===e.length?e[0]:p.Zero(),p.Zero()),Nn(t,f)&&(t=t.c()),Nn(e,f)&&(e=e.c()),Nn(t,n)&&(e=t.imag(),t=t.real()),!Nn(this,n))return new n(t,e);this.re=p.cast(t),this.im=p.cast(e)},__static__:{Symbol:"i",O:null,I:null,J:null,i:null,j:null,Zero:function(){return null==v.O&&(v.O=v(p.Zero(),p.Zero())),v.O},One:function(){return null==v.I&&(v.I=v(p.One(),p.Zero())),v.I},MinusOne:function(){return null==v.J&&(v.J=v(p.MinusOne(),p.Zero())),v.J},Img:function(){return null==v.i&&(v.i=v(p.Zero(),p.One())),v.i},MinusImg:function(){return null==v.j&&(v.j=v(p.Zero(),p.MinusOne())),v.j},hasInverse:function(){return!0},cast:null,gcd:Et,xgcd:function n(){var t,e,r,i,u,l,s,o,m=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,c=m.length,a=J.Arithmetic.O,f=v.One(),h=v.One();if(0!==c){if(t=m[0],1===c)return t.real().abs().lt(t.imag().abs())&&(t=t.mul(v.Img()),f=f.mul(v.Img())),t.real().lt(a)&&(t=t.neg(),f=f.neg()),[t,f];if(o=2===c?[m[1],v.One()]:n(G.call(m,1)),e=o[0],t.equ(a))return e.real().abs().lt(e.imag().abs())&&(e=e.mul(v.Img()),f=f.mul(v.Img()),h=h.mul(v.Img())),e.real().lt(a)&&(e=e.neg(),f=f.neg(),h=h.neg()),Dn(o.length+1,function(n){return 0===n?e:1===n?f:o[n-1].mul(h)});if(e.equ(a))return t.real().abs().lt(t.imag().abs())&&(t=t.mul(v.Img()),f=f.mul(v.Img()),h=h.mul(v.Img())),t.real().lt(a)&&(t=t.neg(),f=f.neg(),h=h.neg()),Dn(o.length+1,function(n){return 0===n?t:1===n?f:o[n-1].mul(h)});for(r=v.One(),i=v.Zero(),u=v.Zero(),l=v.One();;){if(t=(s=t.divmod(e))[1],r=r.sub(s[0].mul(u)),i=i.sub(s[0].mul(l)),t.equ(a))return e.real().abs().lt(e.imag().abs())&&(e=e.mul(v.Img()),f=f.mul(v.Img()),h=h.mul(v.Img())),e.real().lt(a)&&(e=e.neg(),f=f.neg(),h=h.neg()),u=u.mul(f),l=l.mul(h),Dn(o.length+1,function(n){return 0===n?e:1===n?u:o[n-1].mul(l)});if(e=(s=e.divmod(t))[1],u=u.sub(s[0].mul(r)),l=l.sub(s[0].mul(i)),e.equ(a))return t.real().abs().lt(t.imag().abs())&&(t=t.mul(v.Img()),f=f.mul(v.Img()),h=h.mul(v.Img())),t.real().lt(a)&&(t=t.neg(),f=f.neg(),h=h.neg()),r=r.mul(f),i=i.mul(h),Dn(o.length+1,function(n){return 0===n?t:1===n?r:o[n-1].mul(i)})}}},lcm:function(){var n,t,e=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,r=e.length,i=J.Arithmetic.O;if(r<=1)return 1===r?e[0]:v.Zero();if(e[0].equ(i)||e[1].equ(i))return v.Zero();for(t=Dt(e[0],e[1]),n=2;n<r;n++){if(e[n].equ(i))return v.Zero();t=Dt(t,e[n])}return t},max:Te,min:Pe,rnd:function(n,t,e){return n=v.cast(n),t=v.cast(t),v(p.rnd(n.real(),t.real(),e),p.rnd(n.imag(),t.imag(),e))},fromString:function(n){var t,e,r,i=v.Zero();return(n=H(String(n))).length&&(n=n.match(/^\(?(?:([\+\-])?\s*\(?((?:\\frac\{-?\d+\}\{-?\d+\})|(?:-?\d+(?:\.\d*(?:\[\d+\])?)?(?:e-?\d+)?(?:\/-?\d+)?))?\)?(\*?[ij])?)(?:\s*([\+\-])?\s*(?:\(?((?:\\frac\{-?\d+\}\{-?\d+\})|(?:-?\d+(?:\.\d*(?:\[\d+\])?)?(?:e-?\d+)?(?:\/-?\d+)?))\)?\*?)?([ij]))?\)?$/))?(n=n[3]&&!n[6]?(r=n[2]?n[2]:n[3]?"1":"0",e=n[5]||"0",t="-"===n[1]?"-":"","-"===n[4]?"-":""):(r=n[5]?n[5]:n[6]?"1":"0",e=n[2]||"0",t="-"===n[4]?"-":"","-"===n[1]?"-":""),v(p.fromString(n+e),p.fromString(t+r))):i}},re:null,im:null,_n:null,_i:null,_c:null,_str:null,_strp:null,_tex:null,_dec:null,_norm:null,_int:null,_rem:null,_simpl:!1,dispose:function(){var n=this;return n._n&&n===n._n._n&&(n._n._n=null),n._i&&n===n._i._i&&(n._i._i=null),n._c&&n===n._c._c&&(n._c._c=null),n.re=null,n.im=null,n._n=null,n._i=null,n._c=null,n._str=null,n._strp=null,n._tex=null,n._dec=null,n._norm=null,n._int=null,n._rem=null,n},isReal:function(){var n=J.Arithmetic;return this.im.equ(n.O)},isImag:function(){var n=J.Arithmetic.O;return this.re.equ(n)&&!this.im.equ(n)},isInt:function(){return this.isReal()&&this.re.isInt()},isGauss:function(){return this.re.isInt()&&this.im.isInt()},equ:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?t.re.equ(n.re)&&t.im.equ(n.im):Nn(n,a)||e.isNumber(n)?t.re.equ(n)&&t.im.equ(e.O):Nn(n,_)?n.equ(t):!!On(n)&&(n===t.toString()||n===t.toTex()||n===t.toDec())},gt:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?t.isReal()&&n.isReal()?t.re.gt(n.re):t.isImag()&&n.isImag()?t.im.gt(n.im):t.norm().gt(n.norm()):(Nn(n,a)||e.isNumber(n))&&t.isReal()?t.re.gt(n):!!Nn(n,_)&&n.lt(t)},gte:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?t.isReal()&&n.isReal()?t.re.gte(n.re):t.isImag()&&n.isImag()?t.im.gte(n.im):t.norm().gte(n.norm()):(Nn(n,a)||e.isNumber(n))&&t.isReal()?t.re.gte(n):!!Nn(n,_)&&n.lte(t)},lt:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?t.isReal()&&n.isReal()?t.re.lt(n.re):t.isImag()&&n.isImag()?t.im.lt(n.im):t.norm().lt(n.norm()):(Nn(n,a)||e.isNumber(n))&&t.isReal()?t.re.lt(n):!!Nn(n,_)&&n.gt(t)},lte:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?t.isReal()&&n.isReal()?t.re.lte(n.re):t.isImag()&&n.isImag()?t.im.lte(n.im):t.norm().lte(n.norm()):(Nn(n,a)||e.isNumber(n))&&t.isReal()?t.re.lte(n):!!Nn(n,_)&&n.gte(t)},real:function(){return this.re},imag:function(){return this.im},norm:function(){var n,t,e=this,r=J.Arithmetic.II;return null==e._norm&&(n=e.re,t=e.im,e._norm=n.pow(r).add(t.pow(r))),e._norm},abs:function(){return v(this.re.abs(),this.im.abs())},neg:function(){var n=this;return null==n._n&&(n._n=v(n.re.neg(),n.im.neg()),n._n._n=n),n._n},conj:function(){var n=this;return null==n._c&&(n._c=v(n.re,n.im.neg()),n._c._c=n),n._c},rev:function(){return v(this.im,this.re)},inv:function(){var n=this,t=J.Arithmetic;if(null==n._i){if(n.equ(t.O))throw new Error("Division by zero in inverse in Abacus.Complex!");t=n.norm(),n._i=v(n.re.div(t),n.im.div(t).neg()),n._i._i=n}return n._i},add:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?v(t.re.add(n.re),t.im.add(n.im)):Nn(n,a)||e.isNumber(n)?v(t.re.add(n),t.im):Nn(n,_)?n.add(t):t},sub:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?v(t.re.sub(n.re),t.im.sub(n.im)):Nn(n,a)||e.isNumber(n)?v(t.re.sub(n),t.im):Nn(n,_)?n.neg().add(t):t},mul:function(n){var t,e,r,i,u,l=this,s=J.Arithmetic;return Nn(n,v)?l.isReal()?v(n.re.mul(l.re),n.im.mul(l.re)):l.isImag()?v(n.im.mul(l.im).neg(),n.re.mul(l.im)):n.isReal()?v(l.re.mul(n.re),l.im.mul(n.re)):n.isImag()?v(l.im.mul(n.im).neg(),l.re.mul(n.im)):(e=l.re,r=n.re,i=l.im,u=n.im,t=e.mul(r.add(u)),u=u.mul(e.add(i)),e=r.mul(i.sub(e)),v(t.sub(u),t.add(e))):Nn(n,a)||s.isNumber(n)?v(l.re.mul(n),l.im.mul(n)):Nn(n,_)?n.mul(l):l},div:function(n){var t,e,r,i,u,l=this,s=J.Arithmetic,o=s.O;if(Nn(n,v)){if(n.equ(o))throw new Error("Division by zero in Abacus.Complex!");return n.isReal()?v(l.re.div(n.re),l.im.div(n.re)):n.isImag()?v(l.im.div(n.im),l.re.div(n.im).neg()):(t=n.norm(),e=l.re,r=n.re.div(t),i=l.im,u=n.im.div(t).neg(),t=e.mul(r.add(u)),u=u.mul(e.add(i)),e=r.mul(i.sub(e)),v(t.sub(u),t.add(e)))}if(Nn(n,a)||s.isNumber(n)){if(Nn(n,a)&&n.equ(o)||s.isNumber(n)&&s.equ(o,n))throw new Error("Division by zero in Abacus.Complex!");return v(l.re.div(n),l.im.div(n))}return l},mod:function(n,t){var e=J.Arithmetic;return Nn(n,a)||e.isNumber(n)?this.sub((Nn(t,v)?t:this.div(n).round()).mul(n)):this},divmod:function(n){var t=this.div(n).round();return[t,this.mod(n,t)]},divides:function(n){return!this.equ(J.Arithmetic.O)},pow:function(n){var t,e,r=this,i=J.Arithmetic,u=i.O,l=i.I;if((n=Z.cast(n)).gt(un))return null;if(r.equ(u)){if(n.lt(u))throw new Error("Zero denominator in negative power in Abacus.Complex!");return v.Zero()}if(n.equ(u))return v.One();if(n.equ(l))return r;for(n.lt(u)&&(r=r.inv(),n=n.neg()),n=i.val(n.num),e=r,t=v.One();0!==n;)1&n&&(t=t.mul(e)),n>>=1,e=e.mul(e);return t},rad:function(n){var t=this,e=J.Arithmetic;return(n=Z.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))):ht(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=J.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=J.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=J.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")),wn(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<n&&(r+="."+new Array(n+1).join("0"))),r):e._dec}})).cast=ke([v],function(n){return On(n)?v.fromString(n):new v(n)}),S=n(f,{constructor:function n(t){if(!Nn(this,n))return new n(t);this.sym=Nn(t,n)?t.sym:n.fromString(t,!1)},__static__:{fromString:function(n,t){var e;return-1!==(e=(n=H(String(n))).indexOf("_"))&&"{"===n.charAt(e+1)&&"}"===n.charAt(n.length-1)&&(n=n.slice(0,e)+"_"+n.slice(e+2,-1)),!1!==t?new S(n):n}},sym:null,_tex:null,dispose:function(){return this.sym=null,this._tex=null,this},c:function(){return v.One()},isConst:function(){return!1},isReal:function(){return!0},isImag:function(){return!1},real:function(){return this},imag:function(){return N()},equ:function(n){return Nn(n,S)?this.sym===n.sym:Nn(n,f)?n.equ(this):!!On(n)&&(n===this.toString()||n===this.toTex())},neg:function(){return C(this,-1)},inv:function(){return d(1,this)},add:function(n){return N([this,n])},sub:function(n){return N([this,n.neg()])},mul:function(n){var t=this;return Nn(n,S)?t.sym===n.sym?h(t,2):C([t,n],1):Nn(n,a)?C(t,n):Nn(n,f)?n.mul(t):t},div:function(n){return d(this,n)},pow:function(n){return h(this,n)},rad:function(n){return h(this,p(1,n))},d:function(n){return null==n&&(n=1),(n=+n)<0?null:1===n?v.One():v.Zero()},evaluate:function(n){return n=n||{},v.cast(n[this.sym]||0)},toString:function(){return this.sym},toTex:function(){return null==this._tex&&(this._tex=Zn(this.sym)),this._tex}}),h=n(f,{constructor:function n(t,e){var r=this;if(!Nn(r,n))return new n(t,e);Nn(t,n)?(r.base=t.base,r.exp=t.exp):Nn(t,[_,x])?(r.base=t,r.exp=Nn(e,[_,x])?e:p.cast(null==e?1:e)):On(t)?(t=n.fromString(t,!1),r.base=t[0],r.exp=t[1]):(r.base=v.One(),r.exp=p.One())},__static__:{Symbol:S,fromString:function(n,t){var e,r;return-1!==(e=(n=H(String(n))).indexOf("^"))?("{"===(r=n.slice(e+1)).charAt(0)&&"}"===r.charAt(r.length-1)&&(r=H(r.slice(1,-1))),n=n.slice(0,e)):r="1",n=S.fromString(H(n)),r=p.fromString(r),!1!==t?new h(n,r):[n,r]}},base:null,exp:null,_str:null,_tex:null,dispose:function(){var n=this;return n.base=null,n.exp=null,n._str=null,n._tex=null,n},c:function(){return v.One()},isConst:function(){return this.base.isConst()&&this.exp.isConst()},isReal:function(){return this.base.isReal()&&this.exp.isReal()},isImag:function(){return this.base.isImag()&&this.exp.isReal()},real:function(){return h(this.base.real(),this.exp.real())},imag:function(){return h(this.base.imag(),this.exp.imag())},equ:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.base.equ(n.base)&&t.exp.equ(n.exp):Nn(n,[x,S,a])||e.isNumber(n)?t.base.equ(n)&&t.exp.equ(e.I):Nn(n,_)?n.equ(t):!!On(n)&&(n===t.toString()||n===t.toTex())},gt:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.exp.equ(n.exp)&&t.base.gt(n.base)||t.base.equ(n.base)&&t.exp.gt(n.exp):Nn(n,[x,S])?t.base.equ(n)&&t.exp.gt(e.I):Nn(n,a)||e.isNumber(n)?t.exp.equ(e.I)&&t.base.gt(n)||t.base.equ(n)&&t.exp.gt(e.I):!!Nn(n,_)&&n.lt(t)},gte:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.exp.equ(n.exp)&&t.base.gte(n.base)||t.base.equ(n.base)&&t.exp.gte(n.exp):Nn(n,[x,S])?t.base.equ(n)&&t.exp.gte(e.I):Nn(n,a)||e.isNumber(n)?t.exp.equ(e.I)&&t.base.gte(n)||t.base.equ(n)&&t.exp.gte(e.I):!!Nn(n,_)&&n.lte(t)},lt:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.exp.equ(n.exp)&&t.base.lt(n.base)||t.base.equ(n.base)&&t.exp.lt(n.exp):Nn(n,[x,S])?t.base.equ(n)&&t.exp.lt(e.I):Nn(n,a)||e.isNumber(n)?t.exp.equ(e.I)&&t.base.lt(n)||t.base.equ(n)&&t.exp.lt(e.I):!!Nn(n,_)&&n.gt(t)},lte:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.exp.equ(n.exp)&&t.base.lte(n.base)||t.base.equ(n.base)&&t.exp.lte(n.exp):Nn(n,[x,S])?t.base.equ(n)&&t.exp.lte(e.I):Nn(n,a)||e.isNumber(n)?t.exp.equ(e.I)&&t.base.lte(n)||t.base.equ(n)&&t.exp.lte(e.I):!!Nn(n,_)&&n.gte(t)},abs:function(){return Nn(this.base,S)?this:h(this.base.abs(),this.exp)},neg:function(){return C(this,-1)},conj:function(){return Nn(this.base,S)?this:h(this.base.conj(),this.exp)},inv:function(){return h(this.base,this.exp.neg())},add:function(n){var t=J.Arithmetic;return Nn(n,[a,S,h,C,x])||t.isNumber(n)?N([this,n]):Nn(n,_)?n.add(this):this},sub:function(n){var t=J.Arithmetic;return Nn(n,a)||t.isNumber(n)?N([this,t.isNumber(n)?t.neg(n):n.neg()]):Nn(n,[S,h,C,x])?N([this,n.neg()]):Nn(n,_)?n.neg().add(this):this},mul:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.base.equ(n.base)?h(t.base,t.exp.add(n.exp)):C([t,n]):Nn(n,[x,S])?t.base.equ(n)?h(t.base,t.exp.add(e.I)):C([t,n]):Nn(n,a)||e.isNumber(n)?C(t,n):Nn(n,_)?n.mul(t):t},div:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.base.equ(n.base)?h(t.base,t.exp.sub(n.exp)):C([t,n.inv()]):Nn(n,[x,S])?t.base.equ(n)?h(t.base,t.exp.sub(e.I)):C([t,h(n,p.MinusOne())]):Nn(n,a)||e.isNumber(n)?C(t,e.isNumber(n)?p(e.I,n):n.inv()):Nn(n,_)?n.inv().mul(t):t},pow:function(n){return h(this.base,this.exp.mul(n))},rad:function(n){return h(this.base,this.exp.div(n))},d:function(n){var t,e=this,r=J.Arithmetic,i=r.O;return null==n&&(n=1),(n=+n)<0?null:(t=e.exp.sub(n),!e.exp.lt(i)&&Nn(t,a)&&t.isReal()&&t.isInt()&&!t.gte(i)?C(1,i):C(h(e.base,t),En(function(n,t){return e.exp.sub(t).mul(n)},r.I,null,0,n-1,1)))},evaluate:function(n){var t,e=this,r=J.Arithmetic;return n=n||{},t=p.cast(Nn(e.exp,f)?e.exp.evaluate(n):e.exp).simpl(),(e=v.cast(Nn(e.base,f)?e.base.evaluate(n):e.base).simpl()).equ(r.O)?v.Zero():e.pow(t.num).rad(t.den)},toString:function(){var n=this,t=J.Arithmetic,e=t.O;return null==n._str&&(n._str=n.exp.equ(e)?"1":n.exp.equ(t.I)?n.base.toString():(Nn(n.base,S)?n.base.toString():"("+n.base.toString()+")")+(Nn(n.exp,S)||Nn(n.exp,a)&&n.exp.isReal()||Nn(n.exp,o)&&n.exp.isConst(!0)&&n.exp.c().isReal()?"^"+n.exp.toString(!0):"^("+n.exp.toString()+")")),n._str},toTex:function(){var n=this,t=J.Arithmetic,e=t.O;return null==n._tex&&(n._tex=n.exp.equ(e)?"1":n.exp.equ(t.I)?n.base.toTex():(Nn(n.base,S)?n.base.toTex():"("+n.base.toTex()+")")+("^{"+n.exp.toTex())+"}"),n._tex}}),C=n(f,{constructor:function n(t,e){var r,i,u,l=this,s=J.Arithmetic;if(!Nn(l,n))return new n(t,e);if(Nn(t,n))e=t.factors[1],l.symbol=t.symbol,l.symbolTex=t.symbolTex,t=t.factors,r=e,l.factors=c(),l.factors[1]=r,l.factors[1].equ(s.O)||n.Merge(t,l);else if(Nn(t,[S,x,h]))Nn(t,[S,x])&&(t=h(t,s.I)),r=v.cast(null==e?s.I:e),l.symbol=t.toString(),l.symbolTex=t.toTex(),l.factors=c(),l.factors[1]=r,l.factors[1].equ(s.O)||n.Merge(t,l);else if(Nn(t,a))l.symbol="1",l.symbolTex="1",l.factors=c(),l.factors[1]=v.cast(t);else if(On(t))e=v.cast(null==e?s.I:e),l.factors=c(),l.factors[1]=e,l.factors[1].equ(s.O)||n.Merge(t,l),n.Symbol(l);else if(qn(t)){if(e=v.cast(null==e?s.I:e),l.factors=c(),l.factors[1]=e,!l.factors[1].equ(s.O))for(i=0,u=t.length;i<u;i++)n.Merge(t[i],l);n.Symbol(l)}else In(t)?(e=v.cast(null==e?s.I:e),l.factors=c(),l.factors[1]=e,l.factors[1].equ(s.O)||n.Merge(t,l)):(l.factors=c(),l.factors[1]=v.cast(null==e?s.I:e)),n.Symbol(l)},__static__:{Term:h,Merge:function(n,e,r){var t,i,u,l,s=J.Arithmetic,o=s.O,m=s.I;function c(n){var t;if(On(n)){if("1"===n||!n.length)return;n=h(n)}Nn(n,h)&&"1"!==(t=n.base.toString())&&(-1===r?e.factors[t]?e.factors[t]=e.factors[t].div(n):e.factors[t]=n.inv():e.factors[t]?e.factors[t]=e.factors[t].mul(n):e.factors[t]=n,e.factors[t].exp.equ(o)&&delete e.factors[t])}if(!("1"===n||1===n||s.isNumber(n)&&s.equ(m,n)))if(Nn(n,[S,x]))c(h(n,m));else if(Nn(n,h))c(n);else if(On(n))for(i=0,u=(l=n.split("*")).length;i<u;i++)c(h(l[i]));else if(qn(n)||An(n))for(i=0,u=n.length;i<u;i++)c(n[i]);else if(In(n))for(i=0,u=(t=rn(n)).length;i<u;i++)c(Nn(n[t[i]],h)?n[t[i]]:h(t[i],n[t[i]]));return e},Symbol:function(r){var n;J.Arithmetic.I;return r._symb=null,n=r.symbols().reduce(function(n,t){var e=r.factors[t];return[n[0]+("1"===t?"":(n[0].length?"*":"")+e.toString()),n[1]+("1"===t?"":e.toTex())]},["",""]),r.symbol=n[0],r.symbolTex=n[1],r.symbol.length||(r.symbol="1"),r.symbolTex.length||(r.symbolTex="1"),r}},factors:null,symbol:null,symbolTex:null,_str:null,_tex:null,_symb:null,dispose:function(){var n=this;return n._n&&n._n._n===n&&(n._n._n=null),n.factors=null,n.symbol=null,n.symbolTex=null,n._str=null,n._tex=null,n._symb=null,n},symbols:function(){return null==this._symb&&(this._symb=rn(this.factors).sort()),this._symb},c:function(){return this.factors[1]},isConst:function(){return"1"===this.symbol},isReal:function(){var n,t=this.factors;for(n in t)if(z.call(t,n)&&!t[n].isReal())return!1;return!0},isImag:function(){var n,t=this.factors;for(n in t)if(z.call(t,n)&&!t[n].isImag())return!1;return!0},real:function(){var e=this;return C(e.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=e.factors[t].real()),n},{}),e.factors[1].real())},imag:function(){var e=this;return C(e.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=e.factors[t].imag()),n},{}),e.factors[1].imag())},equ:function(n){var t=this,e=J.Arithmetic,r=e.O;return Nn(n,S)?n.sym===t.symbol&&t.factors[1].equ(e.I):e.isNumber(n)?e.equ(r,n)?t.factors[1].equ(r):"1"===t.symbol&&t.factors[1].equ(n):Nn(n,a)?n.equ(r)?t.factors[1].equ(r):"1"===t.symbol&&t.factors[1].equ(n):Nn(n,[h,x])?n.equ(r)&&t.equ(r)||t.symbol===n.toString()&&t.factors[1].equ(e.I):Nn(n,C)?n.equ(r)&&t.equ(r)||t.symbol===n.symbol&&t.factors[1].equ(n.factors[1]):Nn(n,_)?n.equ(t):!!On(n)&&(n===t.toString()||n===t.toTex())},gt:function(n){var t=this,e=J.Arithmetic;return Nn(n,[S,h,x])&&(n=C(n)),Nn(n,N)?n.lt(t):Nn(n,C)&&"1"===t.symbol&&"1"===n.symbol?t.c().gt(n.c()):!("1"!==t.symbol||!Nn(n,a)&&!e.isNumber(n))&&t.c().gt(n)},gte:function(n){var t=this,e=J.Arithmetic;return Nn(n,[S,h,x])&&(n=C(n)),Nn(n,N)?n.lte(t):Nn(n,C)&&"1"===t.symbol&&"1"===n.symbol?t.c().gte(n.c()):!("1"!==t.symbol||!Nn(n,a)&&!e.isNumber(n))&&t.c().gte(n)},lt:function(n){var t=this,e=J.Arithmetic;return Nn(n,[S,h,x])&&(n=C(n)),Nn(n,N)?n.gt(t):Nn(n,C)&&"1"===t.symbol&&"1"===n.symbol?t.c().lt(n.c()):!("1"!==t.symbol||!Nn(n,a)&&!e.isNumber(n))&&t.c().lt(n)},lte:function(n){var t=this,e=J.Arithmetic;return Nn(n,[S,h,x])&&(n=C(n)),Nn(n,N)?n.gte(t):Nn(n,C)&&"1"===t.symbol&&"1"===n.symbol?t.c().lte(n.c()):!("1"!==t.symbol||!Nn(n,a)&&!e.isNumber(n))&&t.c().lte(n)},abs:function(){var e=this;J.Arithmetic;return C(e.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=e.factors[t].abs()),n},{}),e.factors[1].abs())},neg:function(){J.Arithmetic;return C(this.factors,this.factors[1].neg())},conj:function(){var e=this;J.Arithmetic;return C(e.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=e.factors[t].conj()),n},{}),e.factors[1].conj())},inv:function(){var e=this;J.Arithmetic;return C(e.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=e.factors[t].inv()),n},{}),e.factors[1].inv())},add:function(n){var t=this,e=J.Arithmetic;return e.isNumber(n)||Nn(n,a)?C(t.factors,t.factors[1].add(n)):Nn(n,C)?t.symbol===n.symbol?C(t.factors,t.factors[1].add(n.factors[1])):N([t,n]):Nn(n,[x,h,S])?t.symbol===n.toString()?C(t.factors,t.factors[1].add(e.I)):N([t,C(n)]):Nn(n,[N,d])?n.add(t):Nn(n,o)?n.toExpr().add(t):t},sub:function(n){var t=this,e=J.Arithmetic;return e.isNumber(n)||Nn(n,a)?C(t.factors,t.factors[1].sub(n)):Nn(n,C)?t.symbol===n.symbol?C(t.factors,t.factors[1].sub(n.factors[1])):N([t,n.neg()]):Nn(n,[x,h,S])?t.symbol===n.toString()?C(t.factors,t.factors[1].sub(e.I)):N([t,Multerm(n).neg()]):Nn(n,N)?N([t,n.neg()]):Nn(n,d)?n.neg().add(t):Nn(n,o)?N([t,n.toExpr().neg()]):t},mul:function(n){var t,e=this,r=J.Arithmetic,i=r.O;return r.isNumber(n)||Nn(n,a)?C(e.factors,e.factors[1].mul(n)):Nn(n,C)?((t=C({},e.factors[1].mul(n.factors[1]))).factors[1].equ(i)||(C.Merge(e.factors,t),C.Merge(n.factors,t)),C.Symbol(t),t):Nn(n,[x,h,S])?((t=C({},e.factors[1])).factors[1].equ(i)||(C.Merge(e.factors,t),i=(n=Nn(n,S)?h(n):n).base.toString(),t.factors[i]?t.factors[i]=t.factors[i].mul(n):t.factors[i]=n,t.factors[i].exp.equ(r.O)&&delete t.factors[i]),C.Symbol(t),t):Nn(n,[N,d])?n.mul(e):Nn(n,o)?n.toExpr().mul(e):e},div:function(n){var t,e=this,r=J.Arithmetic;return r.isNumber(n)||Nn(n,a)?C(e.factors,e.factors[1].div(n)):Nn(n,C)?((t=C({},e.factors[1].div(n.factors[1]))).factors[1].equ(O)||(C.Merge(e.factors,t),C.Merge(n.factors,t,-1)),C.Symbol(t),t):Nn(n,[x,h,S])?((t=C({},e.factors[1])).factors[1].equ(O)||(C.Merge(e.factors,t),n=Nn(n,S)?h(n):n,s=n.base.toString(),t.factors[s]?t.factors[s]=t.factors[s].div(n):t.factors[s]=n.inv(),t.factors[s].exp.equ(r.O)&&delete t.factors[s]),C.Symbol(t),t):(Nn(n,[N,d])||Nn(n,o),e)},mod:yn,divmod:yn,pow:function(e){var r=this,n=J.Arithmetic,t=n.O,n=n.I;return e=Z.cast(e),r.equ(t)?C(1,t):e.equ(t)?C(1,n):e.equ(n)?r:C(r.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=r.factors[t].pow(e)),n},{}),r.factors[1].pow(e))},rad:function(e){var r=this,n=J.Arithmetic,t=n.O,n=n.I;return e=Z.cast(e),r.equ(t)?C(1,t):e.equ(t)?null:e.equ(n)?r:C(r.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=r.factors[t].rad(e)),n},{}),r.factors[1].rad(e))},d:function(n,t){var e,r,i,u,l=this.factors,s=J.Arithmetic,o=s.O,s=s.I;if(null==t&&(t=1),t=+t,n=String(n||"x"),t<0)return null;if(l[1].equ(o)||"1"===n||!z.call(l,n))return C({},o);for(e in r={},i=s,l)z.call(l,e)&&"1"!==e&&(n===e?(u=l[e].d(t),z.call(u.factors,e)&&(r[e]=u.factors[e]),i=u.c().mul(i)):r[e]=l[e]);return C(r,l[1].mul(i))},evaluate:function(e){var r=this,n=J.Arithmetic,i=n.O;n.I;return e=e||{},"1"===r.symbol?r.factors[1]:r.symbols().reduce(function(n,t){return n.equ(i)?v.Zero():n.mul("1"===t?r.factors[1]:r.factors[t].evaluate(e))},v.One())},toString:function(){var n,t=this,e=J.Arithmetic,r=e.O;return null==t._str&&((n=t.factors[1]).equ(r)?t._str="0":n.isReal()?t._str="1"===t.symbol?n.real().toString():(n.real().equ(e.J)?"-":n.real().equ(e.I)?"":n.real().toString(!0)+"*")+t.symbol:t._str="1"===t.symbol?"("+n.toString()+")":"("+n.toString()+")*"+t.symbol),t._str},toTex:function(){var n,t=this,e=J.Arithmetic,r=e.O;return null==t._tex&&((n=t.factors[1]).equ(r)?t._tex="0":n.isReal()?t._tex="1"===t.symbol?n.real().toTex():(n.real().equ(e.J)?"-":n.real().equ(e.I)?"":n.real().toTex())+t.symbolTex:t._tex="1"===t.symbol?"("+n.toTex()+")":"("+n.toTex()+")"+t.symbolTex),t._tex}}),N=J.Expr=n(f,{constructor:function n(){var t,e,r=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;if(!Nn(this,n))return new n(r);for(this.terms=c(),this.terms[1]=C(1,v.Zero()),t=0,e=r.length;t<e;t++)n.Merge(r[t],this)},__static__:{Term:C,Merge:function n(t,e){var r=J.Arithmetic,i=r.O;if(r.isNumber(t)||Nn(t,a))e.terms[1]?e.terms[1]=e.terms[1].add(t):e.terms[1]=C(1,t);else if(Nn(t,[S,h,C]))Nn(t,S)&&(t=h(t,r.I)),Nn(t,h)&&(t=C(t,r.I)),e.terms[t.symbol]?e.terms[t.symbol]=e.terms[t.symbol].add(t):"1"!==t.symbol&&t.factors[1].equ(i)||(e.terms[t.symbol]=t),"1"!==t.symbol&&e.terms[t.symbol]&&e.terms[t.symbol].factors[1].equ(i)&&delete e.terms[t.symbol];else if(Nn(t,[x]))t=C(t,r.I),e.terms[t.symbol]&&(e.terms[t.symbol]=e.terms[t.symbol].add(t)),"1"!==t.symbol&&e.terms[t.symbol]&&e.terms[t.symbol].factors[1].equ(i)&&delete e.terms[t.symbol];else if(Nn(t,[N,o])){Nn(t,o)&&(t=t.toExpr());for(var u=0,l=t.symbols(),s=l.length;u<s;u++)n(t.terms[l[u]],e)}return e},fromString:function(n){var t,e,r,i=J.Arithmetic,u=[],l=/(\(?(?:(?:[\+\-])?\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+\}?)?(?:\s*\*\s*[a-zA-Z](?:_\{?\d+\}?)?(?:\^\{?\d+\}?)?)*)?)?/g;for(n=H(String(n));r=l.exec(n);){if(!r[0].length){if(l.lastIndex<n.length){l.lastIndex++;continue}break}H(r[0]).length&&(r[2]?(e=r[2],""===(t=H(r[1]||""))||"+"===t?t="1":"-"===t&&(t="-1")):(e="1","+"===(t=H(r[1]||""))?t="1":"-"===t?t="-1":""===t&&(t="0")),(r=v.fromString(t))&&!r.equ(i.O)&&u.push(C(e,r)))}return new N(u)},cast:null},terms:null,_str:null,_tex:null,_n:null,_symb:null,dispose:function(){var n=this;return n._n&&n._n._n===n&&(n._n._n=null),n.terms=null,n._str=null,n._tex=null,n._n=null,n._symb=null,n},clone:function(){return new N(this.args())},symbols:function(){return null==this._symb&&(this._symb=rn(this.terms).sort()),this._symb},args:function(){var t=this;return t.symbols().map(function(n){return t.terms[n]})},term:function(n){return n=String(n),z.call(this.terms,n)?this.terms[n]:C("1",v.Zero())},c:function(){return this.terms[1].c()},isConst:function(){return 1===this.symbols().length},isReal:function(){var n,t=this.terms;for(n in t)if(z.call(t,n)&&!t[n].isReal())return!1;return!0},isImag:function(){var n,t=this.terms;for(n in t)if(z.call(t,n)&&!t[n].isImag())return!1;return!0},real:function(){return N(this.args().map(function(n){return n.real()}))},imag:function(){return N(this.args().map(function(n){return n.imag()}))},equ:function(n){var t,e,r,i=this,u=J.Arithmetic,l=u.O;if(u.isNumber(n)||Nn(n,a))return 1===i.symbols().length&&i.terms[1].equ(n);if(Nn(n,[S,h,C,x]))return Nn(n,[S,h,x])&&(n=C(n,u.I)),"1"===n.symbol?1===i.symbols().length&&i.terms[1].equ(n):z.call(i.terms,n.symbol)&&2===i.symbols().length&&i.terms[1].equ(l)&&i.terms[n.symbol].equ(n);if(Nn(n,[N,o])){if(Nn(n,o)&&(n=n.toExpr()),e=(r=n.symbols()).length,i.symbols().length!==e)return!1;for(t=0;t<e;t++)if(!z.call(i.terms,r[t])||!n.terms[r[t]].equ(i.terms[r[t]]))return!1;return!0}return Nn(n,d)?n.equ(i):!!On(n)&&(n===i.toString()||n===i.toTex())},gt:function(n){var t,e=J.Arithmetic;return Nn(n,o)&&(n=n.toExpr()),Nn(n,d)?n.lt(this):Nn(n,[N,x,C,h,S])?1===(t=this.sub(n)).symbols().length&&t.c().gt(e.O):!(!Nn(n,a)&&!e.isNumber(n)||1!==this.symbols().length)&&this.c().gt(n)},gte:function(n){var t,e=J.Arithmetic;return Nn(n,o)&&(n=n.toExpr()),Nn(n,d)?n.lte(this):Nn(n,[N,x,C,h,S])?1===(t=this.sub(n)).symbols().length&&t.c().gte(e.O):!(!Nn(n,a)&&!e.isNumber(n)||1!==this.symbols().length)&&this.c().gte(n)},lt:function(n){var t,e=J.Arithmetic;return Nn(n,o)&&(n=n.toExpr()),Nn(n,d)?n.gt(this):Nn(n,[N,x,C,h,S])?1===(t=this.sub(n)).symbols().length&&t.c().lt(e.O):!(!Nn(n,a)&&!e.isNumber(n)||1!==this.symbols().length)&&this.c().lt(n)},lte:function(n){var t,e=J.Arithmetic;return Nn(n,o)&&(n=n.toExpr()),Nn(n,d)?n.gte(this):Nn(n,[N,x,C,h,S])?1===(t=this.sub(n)).symbols().length&&t.c().lte(e.O):!(!Nn(n,a)&&!e.isNumber(n)||1!==this.symbols().length)&&this.c().lte(n)},neg:function(){var n=this;return null==n._n&&(n._n=N(n.args().map(function(n){return n.neg()})),n._n._n=n),n._n},conj:function(){return N(this.args().map(function(n){return n.conj()}))},inv:function(){return d(1,this)},add:function(n){var t=J.Arithmetic;return Nn(n,d)?n.add(this):t.isNumber(n)||Nn(n,[a,S,h,C,x,N,o])?N([this,n]):this},sub:function(n){var t=J.Arithmetic;return t.isNumber(n)?this.add(t.neg(n)):Nn(n,[a,S,h,C,x,N,o])?(Nn(n,[S,h,x])&&(n=C(n,t.I)),this.add(n.neg())):Nn(n,d)?n.neg().add(this):this},mul:function(e){var r,i,u=this,n=J.Arithmetic,t=n.O;return n.isNumber(e)||Nn(e,[a,S,h,C,x])?(Nn(e,[S,h,x])&&(e=C(e,n.I)),u.equ(t)||Nn(e,[a,C])&&e.equ(t)||n.isNumber(e)&&n.equ(t,e)?N():(r=u.symbols(),N(Dn(r.length,function(n){return u.terms[r[n]].mul(e)})))):Nn(e,[N,o])?(Nn(e,o)&&(e=e.toExpr()),u.equ(t)||e.equ(t)?N():(r=u.symbols(),i=e.symbols(),N(Dn(r.length*i.length,function(n){var t=~~(n/i.length),n=n%i.length;return u.terms[r[t]].mul(e.terms[i[n]])})))):Nn(e,d)?e.mul(u):u},div:function(t){var e,r=this,n=J.Arithmetic;n.O;return n.isNumber(t)||Nn(t,[a,S,h,C])?(Nn(t,[S,h])&&(t=C(t,n.I)),e=r.symbols(),N(Dn(e.length,function(n){return r.terms[e[n]].div(t)}))):Nn(t,d)?t.inv().mul(r):d(r,t)},mod:yn,divmod:yn,pow:function(n){var t,e,r=J.Arithmetic,i=r.O,u=r.I;if((n=Z.cast(n)).lt(i)||n.gt(un))return null;if(this.equ(i))return N();if(n.equ(i))return N([C(1,u)]);if(n.equ(u))return this;for(n=r.val(n.num),e=this,t=N([C(1,u)]);0!==n;)1&n&&(t=t.mul(e)),n>>=1,e=e.mul(e);return t},rad:function(n){var t=this,e=J.Arithmetic,r=e.O,e=e.I;return n=Z.cast(n),t.equ(r)?N():n.equ(r)?null:n.equ(e)?t:N(1===t.symbols().length?t.terms[1].rad(n):C(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:N(r.symbols().map(function(n){return"1"===n?J.Arithmetic.O:r.terms[n].d(t,e)}))},evaluate:function(e){var r=this;J.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=J.Arithmetic.O,s="",o=!1;if(null==u._str){for(e=(n=u.symbols()).length,t=0;t<e;t++)(r=u.terms[n[t]]).equ(l)||(i=r.c(),s+=(!o||i.isReal()&&!i.real().gt(l)?"":"+")+r.toString(),o=!0);u._str=s.length?s:"0"}return u._str},toTex:function(){var n,t,e,r,i,u=this,l=J.Arithmetic.O,s="",o=!1;if(null==u._tex){for(e=(n=u.symbols()).length,t=0;t<e;t++)(r=u.terms[n[t]]).equ(l)||(i=r.c(),s+=(!o||i.isReal()&&!i.real().gt(l)?"":"+")+r.toTex(),o=!0);u._tex=s.length?s:"0"}return u._tex}}),N.cast=ke([N],function(n){return On(n)?N.fromString(n):new N(n)}),(d=J.RationalExpr=n(f,{constructor:function n(t,e){var r=J.Arithmetic;if(!Nn(this,n))return new n(t,e);if(Nn(t,n)?(e=t.den,t=t.num):Nn(t,R)&&(e=t.den.toExpr(),t=t.num.toExpr()),null==t?t=N():Nn(t,N)||(t=N(t)),null==e?e=N(r.I):Nn(e,N)||(e=N(e)),e.equ(r.O))throw new Error("Zero denominator in Abacus.RationalExpr!");t.equ(r.O)&&!e.equ(r.I)&&(e=N(r.I)),this.num=t,this.den=e},__static__:{Term:N,fromString:function(n){var t,e,r,i,u,l,s=0,o=0,m=["",""],c="",a=0,f=/\s/;if(!(n=H(String(n))).length)return d();if("-"===n.charAt(0)||"+"===n.charAt(0)){if(c=n.charAt(0),!(n=H(n.slice(1))).length)return d();c="-"===c?"-":""}for(t="\\frac"===n.slice(0,5),e=n.length,a=t?5:0,i=0,r=n.charAt(a),t&&"{"===r&&(o++,a++);a<e;)r=n.charAt(a++),f.test(r)||("/"===r?t||s||o||!(m[i].length&&")"===m[i].charAt(m[i].length-1)||a<e&&"("===n.charAt(a))?m[i]+=r:i=1:"("===r?(s++,m[i]+=r):")"===r?(s--,m[i]+=r,t||s||o||!(e<=a||"/"===n.charAt(a))||(a<e&&"/"===n.charAt(a)&&a++,i=1)):"{"===r?(o++,m[i]+=r):"}"===r?(o--,s||o?m[i]+=r:(t&&a<e&&"{"===n.charAt(a)&&(o++,a++),i=1)):m[i]+=r);return l=s||o?(u=N.fromString(m[0]),null):(m[0].length&&m[1].length&&"("===m[0].charAt(0)&&")"===m[0].charAt(m[0].length-1)&&(m[0]=H(m[0].slice(1,-1))),m[1].length&&"("===m[1].charAt(0)&&")"===m[1].charAt(m[1].length-1)&&(m[1]=H(m[1].slice(1,-1))),u=N.fromString(m[0]),m[1].length?N.fromString(m[1]):null),"-"===c&&(u=u.neg()),new d(u,l)},cast:null},num:null,den:null,_str:null,_tex:null,dispose:function(){var n=this;return n.num=null,n.den=null,n._str=null,n._tex=null,n},c:function(){return this.num.c().div(this.den.c())},term:function(n){return this.num.term(n)},isConst:function(){return this.num.isConst()&&this.den.isConst()},isReal:function(){return this.num.isReal()&&this.den.isReal()||this.num.isImag()&&this.den.isImag()},isImag:function(){return this.num.isReal()&&this.den.isImag()||this.num.isImag()&&this.den.isReal()},real:function(){return d(this.num.real(),this.den.real())},imag:function(){return d(this.num.imag(),this.den.imag())},neg:function(){return d(this.num.neg(),this.den)},inv:function(){return d(this.den,this.num)},conj:function(){return d(this.num.conj(),this.den.conj())},equ:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o,h,C,N,x])||e.isNumber(n)?t.num.equ(t.den.mul(n)):Nn(n,[p,R,d])?t.num.mul(n.den).equ(t.den.mul(n.num)):!!On(n)&&(n===t.toString()||n===t.toTex())},gt:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o,h,C,N,x])||t.isNumber(n)?this.num.gt(this.den.mul(n)):!!Nn(n,[p,R,d])&&this.num.mul(n.den).gt(this.den.mul(n.num))},gte:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o,h,C,N,x])||t.isNumber(n)?this.num.gte(this.den.mul(n)):!!Nn(n,[p,R,d])&&this.num.mul(n.den).gte(this.den.mul(n.num))},lt:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o,h,C,N,x])||t.isNumber(n)?this.num.lt(this.den.mul(n)):!!Nn(n,[p,R,d])&&this.num.mul(n.den).lt(this.den.mul(n.num))},lte:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o,h,C,N,x])||t.isNumber(n)?this.num.lte(this.den.mul(n)):!!Nn(n,[p,R,d])&&this.num.mul(n.den).lte(this.den.mul(n.num))},add:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||e.isNumber(n))&&(n=p(n)),Nn(n,[v,o,h,C,N,x])?d(t.num.add(t.den.mul(n)),t.den):Nn(n,[p,R,d])?d(t.num.mul(n.den).add(t.den.mul(n.num)),t.den.mul(n.den)):t},sub:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||e.isNumber(n))&&(n=p(n)),Nn(n,[v,o,h,C,N,x])?d(t.num.sub(t.den.mul(n)),t.den):Nn(n,[p,R,d])?d(t.num.mul(n.den).sub(t.den.mul(n.num)),t.den.mul(n.den)):t},mul:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||e.isNumber(n))&&(n=p(n)),Nn(n,[v,o,h,C,N,x])?d(t.num.mul(n),t.den):Nn(n,[p,R,d])?d(t.num.mul(n.num),t.den.mul(n.den)):t},div:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||e.isNumber(n))&&(n=p(n)),Nn(n,[v,o,h,C,N,x])?d(t.num,t.den.mul(n)):Nn(n,[p,R,d])?d(t.num.mul(n.den),t.den.mul(n.num)):t},mod:yn,divmod:yn,divides:function(n){return!this.equ(J.Arithmetic.O)},pow:function(n){var t,e=J.Arithmetic,r=this.num,i=this.den;return(n=Z.cast(n)).gt(un)?null:((n=e.val(n.num))<0&&(n=-n,t=r,r=i,i=t),0===n?d(e.I):1===n?d(r,i):d(r.pow(n),i.pow(n)))},rad:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).equ(t.I)?this:d(this.num.rad(n),this.den.rad(n))},d:function(n,t){var e,r,i,u,l=J.Arithmetic;if(null==t&&(t=1),(t=l.val(t))<0)return null;if(0===t)return this;for(e=this.num,r=this.den;0<t&&!e.equ(l.O);)e=i=e.d(n,1).mul(r).sub(e.mul(r.d(n,1))),r=u=r.pow(2),t--;return d(i,u)},evaluate:function(n){return n=n||{},this.num.evaluate(n).div(this.den.evaluate(n))},toString:function(){var n=this,t=J.Arithmetic;return null==n._str&&(n._str=n.den.equ(t.I)?n.num.toString():(1===n.num.symbols().length&&n.num.c().isReal()?n.num.toString(!0):"("+n.num.toString()+")")+"/"+(1===n.den.symbols().length&&n.den.isReal()?n.den.toString():"("+n.den.toString()+")")),n._str},toTex:function(){var n=this,t=J.Arithmetic;return null==n._tex&&(n._tex=n.den.equ(t.I)?n.num.toTex():"\\frac{"+n.num.toTex()+"}{"+n.den.toTex()+"}"),n._tex}})).cast=ke([d],function(n){return On(n)?d.fromString(n):new d(n)}),t=J.Op=n({constructor:function n(t){if(!Nn(this,n))return new n(t);Nn(t,n)&&(t=t.op),this.op=String(t)},op:"",dispose:function(){return this.op=null,this},clone:function(){return new this[X](this.op)},evaluate:function(){return null},toString:function(){return self.op},toTex:function(){return this.toString()}}),y=J.RelOp=n(t,{constructor:function n(t,e,r){var i=this;if(!Nn(i,n))return new n(t,e,r);Nn(t,n)?(i.lhs=t.lhs,i.op=t.op,i.rhs=t.rhs):(e=String(e||"=").toLowerCase(),null==t&&(t=d()),null==r&&(r=d()),Nn(t,[N,d,x])||(t=d(t)),Nn(r,[N,d,x])||(r=d(r)),i.lhs=t,i.rhs=r,i.op=n.OP(e))},__static__:{OP:function(n){return n="<"===(n=String(n).toLowerCase())||"\\lt"===n?"<":">"===n||"\\gt"===n?">":">="===n||"=>"===n||"\\le"===n?">=":"<="===n||"=<"===n||"\\ge"===n?"<=":"<>"===n||"!="===n||"\\ne"===n?"<>":"~"===n||"\\sim"===n?"~":"="},DUAL:function(n){return"<"===(n=y.OP(n))?">":">"===n?"<":">="===n?"<=":"<="===n?">=":n},EQU:function(n,t){return new y(n,"=",t)},NEQ:function(n,t){return new y(n,"<>",t)},LT:function(n,t){return new y(n,"<",t)},LTE:function(n,t){return new y(n,"<=",t)},GT:function(n,t){return new y(n,">",t)},GTE:function(n,t){return new y(n,">=",t)},SIM:function(n,t){return new y(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<e&&e<n[1]&&(n=[t,e]),n},["=",1/0])[0];return new y(d.fromString(n[0]),t,1<n.length?d.fromString(n[1]):d())}},lhs:null,rhs:null,dispose:function(){return this.lhs=null,this.rhs=null,this.op=null,this},clone:function(){return new this[X](this.lhs,this.op,this.rhs)},equ:function(n){if(Nn(n,y)){if(this.op===n.op&&this.lhs.equ(n.lhs)&&this.rhs.equ(n.rhs))return!0;if(this.op===y.DUAL(n.op)&&this.lhs.equ(n.rhs)&&this.rhs.equ(n.lhs))return!0}return!1},neg:function(){return new y(this.lhs.neg(),y.DUAL(this.op),this.rhs.neg())},add:function(n){var t=this.op;return new y(this.lhs.add(n),t,this.rhs.add(n))},sub:function(n){var t=this.op;return new y(this.lhs.sub(n),t,this.rhs.sub(n))},mul:function(n){var t=this.op,e=J.Arithmetic;return(e.isNumber(n)&&e.lt(n,0)||Nn(n,a)&&n.lt(0))&&(t=y.DUAL(t)),new y(this.lhs.mul(n),t,this.rhs.mul(n))},div:function(n){var t=this.op,e=J.Arithmetic;return(e.isNumber(n)&&e.lt(n,0)||Nn(n,a)&&n.lt(0))&&(t=y.DUAL(t)),new y(this.lhs.div(n),t,this.rhs.div(n))},evaluate:function(n){n=n||{};var t=this.op,e=this.lhs.evaluate(n),n=this.rhs.evaluate(n);return">"===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()}}),x=J.Func=n(t,{constructor:function t(n,e,r,i){if(!Nn(this,t))return new t(n,e,r,i);Nn(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 Nn(n,[N,d,t])||(n=d(n)),n}),this._eval=r||null,this._deriv=i||null)},__static__:{MIN:function(n){return x("min",n,Pe)},MAX:function(n){return x("max",n,Te)}},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[X](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 x(this.op,this.args.map(function(n){return n.real()}),this._eval,this._deriv)},imag:function(){return x(this.op,this.args.map(function(n){return n.imag()}),this._eval,this._deriv)},equ:function(e){return Nn(e,x)?this.op===e.op&&this.args.filter(function(n,t){return t<terms.args.length&&n.equ(e.args[t])}).length===e.args.length:e.equ(this)},gt:function(n){return!1},gte:function(n){return!1},lt:function(n){return!1},lte:function(n){return!1},neg:function(){return N([C(this,-1)])},add:function(n){return N([this,n])},sub:function(n){return N([this,n.neg()])},mul:function(n){return N([C([this,n])])},div:function(n){return d(this,n)},pow:function(n){return N([h(this,n)])},rad:function(n){return N([h(this,p(n).inv())])},d:function(n,t){var e=this._deriv;return null==t&&(t=1),t=+t,n=String(n||"x"),t<0&&Sn(e)?(e=e.apply(this,this.args),1<t&&(e=e.d(n,t-1)),e):this},evaluate:function(t){t=t||{};var n=this.args,e=this._eval;return Sn(e)?e.apply(this,n.map(function(n){return n.evaluate(t)})):v.Zero()},toString:function(){var n=this.args,t=this.op;return"min"!==t&&"max"!==t||1!==n.length?t+"("+n.map(String).join(",")+")":String(n[0])},toTex:function(){var n=this.args,t=this.op;return"min"!==t&&"max"!==t||1!==n.length?"\\"+t+"("+n.map(Mn).join(",")+")":Mn(n[0])}}),q=n({constructor:function n(t,e,r){if(!Nn(this,n))return new n(t,e,r);Nn(t,n)&&(r=r||t.ring,e=t.e,t=t.c),this.ring=Nn(r,M)?r:M.Q(),this.c=Nn(t,[R,d])?t:this.ring.cast(t||0),this.e=+(e||0)},__static__:{isNonZero:function(n){return Nn(n,q)&&!n.c.equ(J.Arithmetic.O)},cmp:function(n,t,e){var r=n.e-t.e;return!0===e&&0==r?n.c.equ(t.c)?0:n.c.lt(t.c)?-1:1:r},sortDecr:function(n,t){return q.cmp(t,n)},gcd:function(n,t,e){return q(!0!==e||Nn(n.c,[R,d])||Nn(t.c,[R,d])||!n.ring.hasGCD()?n.ring.One():n.ring.gcd(n.c,t.c),Q.min(n.e,t.e))},lcm:function(n,t,e){return q(!0!==e||Nn(n.c,[R,d])||Nn(t.c,[R,d])||!n.ring.hasGCD()?n.c.mul(t.c):n.ring.lcm(n.c,t.c),Q.max(n.e,t.e))}},ring:null,c:null,e:null,dispose:function(){return this.ring=null,this.c=null,this.e=null,this},clone:function(){return new q(this)},cast:function(n){return n===this.ring?this:new q(this.c,this.e,n)},equ:function(n){return Nn(n,q)?this.c.equ(n.c)&&this.e===n.e:this.c.equ(n)},neg:function(){return q(this.c.neg(),this.e,this.ring)},add:function(n){return Nn(n,q)?q(this.c.add(n.c),this.e,this.ring):q(this.c.add(n),this.e,this.ring)},sub:function(n){return Nn(n,q)?q(this.c.sub(n.c),this.e,this.ring):q(this.c.sub(n),this.e,this.ring)},mul:function(n){return Nn(n,q)?q(this.c.mul(n.c),this.e+n.e,this.ring):q(this.c.mul(n),this.e,this.ring)},div:function(n){return Nn(n,q)?q(this.c.div(n.c),Q.max(0,this.e-n.e),this.ring):q(this.c.div(n),this.e,this.ring)},divides:function(n){return this.e<=n.e&&this.c.divides(n.c)},pow:function(n){return 1===(n=+n)?this:q(this.c.pow(n),Q.floor(this.e*n),this.ring)},rad:function(n){return 1===(n=+n)?this:q(this.c.rad(n),Q.max(Q.floor(this.e/n),Q.min(1,this.e)),this.ring)},toTerm:function(n,t,e,r,i){var u,l=this.e,s=this.c,o=J.Arithmetic;if(!0===r){if(u=0<l?n+(1<l?"^"+String(l):""):"",!0===e)return u;u=u.length?(s.equ(o.I)?"":s.equ(o.J)?"-":(!Nn(s,[R,d])||s.isConst(!0))&&s.isReal()?s.toDec(i):"("+s.toDec(i)+")")+u:Nn(s,[R,d])&&!s.isConst(!0)?"("+s.toDec(i)+")":s.toDec(i)}else if(!0===t){if(u=0<l?Zn(n)+(1<l?"^{"+Mn(l)+"}":""):"",!0===e)return u;u=u.length?(s.equ(o.I)?"":s.equ(o.J)?"-":(!Nn(s,[R,d])||s.isConst(!0))&&s.isReal()?s.toTex():"("+s.toTex()+")")+u:Nn(s,[R,d])&&!s.isConst(!0)?"("+s.toTex()+")":s.toTex()}else{if(u=0<l?n+(1<l?"^"+String(l):""):"",!0===e)return u;u=u.length?(s.equ(o.I)?"":s.equ(o.J)?"-":(!Nn(s,[R,d])||s.isConst(!0)&&s.den.equ(o.I))&&s.isReal()?s.toString(!0)+"*":"("+s.toString()+")*")+u:Nn(s,[R,d])&&!s.isConst(!0)?"("+s.toString()+")":s.toString()}return u},toString:function(){return"("+this.c.toString()+","+String(this.e)+")"}}),t=n(o,{constructor:function n(t,e,r,i){var u=this;if(!Nn(u,n))return new n(t,e,r,i);u.ring=i||M.Q(),u.symbol=r||"x",u.segments=t.map(function(n){var r,i;return Nn(n,I)?n={poly:n,cond:function(n,t,e){return n.lte(u.ring.create(t+1).div(e))},trans:function(n,t,e){return n.sub(u.ring.create(t).div(e)).mul(e)}}:In(n)&&(Nn(n.poly,I)||(n.poly=I([u.ring.cast(n.poly||0)],u.symbol,u.ring)),Nn(n.cond,a)?n.cond=(i=u.ring.cast(n.cond||0),function(n,t,e){return n.lte(i)}):Sn(n.cond)||(n.cond=function(n,t,e){return n.lte(u.ring.create(t+1).div(e))}),Nn(n.trans,a)?n.cond=(r=u.ring.cast(n.trans||0),function(n,t,e){return n.sub(r)}):Sn(n.trans)||(n.trans=function(n,t,e){return n.sub(u.ring.create(t).div(e)).mul(e)})),n}),u.defaultValue=u.ring.cast(e||0)},segments:null,defaultValue:null,symbol:null,ring:null,dispose:function(){return this.segments=null,this.defaultValue=null,this.symbol=null,this.ring=null,this},evaluate:function(n){var t,e,r=this.segments.length;for(n=this.ring.cast(n),t=0;t<r;t++)if((e=this.segments[t]).cond(n,t,r))return e.poly.evaluate(e.trans(n,t,r));return this.defaultvalue},toString:function(){return"{\n"+this.segments.map(function(n){return n.poly.toString()}).join("\n")+"\n}"},toTex:function(){return"\\begin{cases} "+this.segments.map(function(n,t){return n.poly.toTex()}).join("\\\\")+" \\end{cases}"}}),(I=J.Polynomial=n(o,{constructor:function n(t,e,r){var i,u=this,l=J.Arithmetic,s=l.O;if(!Nn(u,n))return new n(t,e,r);Nn(t,[S,h,C])&&(t=N(t)),Nn(t,N)&&(t=n.fromExpr(t,e||"x",r||M.C())),Nn(t,w)?(u.ring=r||t.ring,u.symbol=String(e||"x"),-1===(i=t.symbol.indexOf(u.symbol))&&(i=0),u.terms=t.terms.map(function(n){return q(n.c,n.e[i],u.ring)}).sort(q.sortDecr).reduce(function(n,t){return n.length&&n[n.length-1].e===t.e?n[n.length-1]=n[n.length-1].add(t):n.push(t),n},[]).filter(q.isNonZero)):Nn(t,n)?(u.ring=r||t.ring,u.symbol=String(e||t.symbol),u.terms=u.ring!==t.ring?t.terms.map(function(n){return q(n.c,n.e,u.ring)}):t.terms.slice()):(u.ring=Nn(r,M)?r:M.Q(),u.symbol=String(e||"x"),(Nn(t,a)||l.isNumber(t)||On(t))&&(t=q(t,0,u.ring)),Nn(t,q)?u.terms=t.c.equ(s)?[]:[t]:qn(t)||An(t)?t.length&&!Nn(t[0],q)?u.terms=Dn(t.length,function(n){return q(t[n],n,u.ring)}).filter(q.isNonZero).reverse():u.terms=An(t)?G.call(t):t:In(t)?u.terms=rn(t).map(function(n){return q(t[n],n,u.ring)}).sort(q.sortDecr):u.terms=[])},__static__:{Term:q,Piecewise:t,Zero:function(n,t){return new I([],n||"x",t||M.Q())},One:function(n,t){return t=t||M.Q(),new I(t.One(),n||"x",t)},MinusOne:function(n,t){return t=t||M.Q(),new I(t.MinusOne(),n||"x",t)},hasInverse:function(){return!1},cast:null,Add:function(n,t,e){var r,i=J.Arithmetic;if(Nn(n,I)){if(n.symbol!==t.symbol)return r=t.symbol>n.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=he(t.terms,n.terms,q,!0===e,t.ring))}else(Nn(n,a)||i.isNumber(n))&&((n=q(n,0,t.ring)).equ(i.O)||(n=t.terms.length?he([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=J.Arithmetic,u=i.O;if(!t.terms.length)return t;if(Nn(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?de(t.terms,n.terms,q,t.ring):[]}else if(Nn(n,a)||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=J.Arithmetic,l=u.O,s=u.I;if(n=!0===n,Nn(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(Dn(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=ge(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(Nn(e,a)||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(Dn(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||J.Arithmetic.O,t||"x",e||M.Q())},gcd:Tt,xgcd:Pt,lcm:$t,bezier:function(n,t){t=String(t||"x");var e,r,i,u,l,s=M.Q(),o=I.Zero(t,s);if(qn(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(Kt(e-1,r)).mul(s.cast(n[r])));return o},bezierThrough:function(n,t){t=String(t||"x");var e,r,i,c=M.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;t<r-1;t++)l[t]=c.One(),s[t]=c.create(4),o[t]=c.One(),m[t]=n[t].mul(4).add(n[t+1].mul(2));for(l[r-1]=c.create(2),s[r-1]=c.create(7),o[r-1]=c.Zero(),m[r-1]=n[r-1].mul(8).add(n[r]),t=1;t<r;t++)e=l[t].div(s[t-1]),s[t]=s[t].sub(e.mul(o[t-1])),m[t]=m[t].sub(e.mul(m[t-1]));for(i[r-1]=m[r-1].div(s[r-1]),t=r-2;0<=t;--t)i[t]=m[t].sub(o[t].mul(i[t+1])).div(s[t]);for(t=0;t<r-1;t++)u[t]=n[t+1].mul(2).sub(i[t+1]);return u[r-1]=n[r].add(i[r-1]).div(2),[i,u]};if(qn(n)&&n.length){if(1===(n=c.cast(n)).length)i=[I(n[0],t,c)];else if(2===n.length)i=[I.bezier([n[0],n[1]],t)];else for(i=[],r=u(n),e=0;e<n.length-1;e++)i.push(I.bezier([n[e],r[0][e],r[1][e],n[e+1]],t));return I.Piecewise(i,0,t,c)}return I.Piecewise([I.Zero(t,c)],0,t,c)},fromValues:function(r,t,i){var u,l,s,n,e,o,m=(i=i||M.Q()).One();if(t=String(t||"x"),!r||!r.length)return I([],t,i);for(An(r)&&(r=G.call(r)),qn(r[0])||(r=[r]),r=r.map(function(n){return[i.cast(n[0]),i.cast(n[1])]}),e=c(),o=[],u=0;u<r.length;u++)if(n=r[u][0].toString(),z.call(e,n)){if(!r[e[n]][1].equ(r[u][1]))return null;o.push(u)}else e[n]=u;for(;o.length;)r.splice(o.pop(),1);return o=e=null,u=r.length,l=Dn(u,function(n){for(var t=m,e=0;e<u;e++)e!==n&&(t=t.mul(r[n][0].sub(r[e][0])));return t=r[n][1].div(t)}),s=Dn(u,function(n){return I([r[n][0].neg(),m],t,i)}),En(function(n,e){return I.Add(En(function(n,t){return e!==t&&(n=I.Mul(s[t],n)),n},I(l[e],t,i),null,0,u-1),n)},I.Zero(t,i),null,0,u-1)},fromExpr:function(n,t,e){if(!Nn(n,N))return null;e=e||M.Q(),t=String(t||"x");for(var r,i,u=n.symbols(),l=J.Arithmetic.O,s={},o=u.length-1;0<=o;o--)r=u[o],(i=n.terms[r].c()).equ(l)||("1"===r?s[0]=i:t===r?s[1]=i:r.length>t.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=J.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||M.Q(),!(n=H(String(n))).length)return I.Zero(t||"x",e);for(;u=c.exec(n);){if(!u[0].length){if(c.lastIndex<n.length){c.lastIndex++;continue}break}if(H(u[0]).length){if(u[2]){if(-1!==(l=(i=u[2]).indexOf("_"))&&"{"===i.charAt(l+1)&&"}"===i.charAt(i.length-1)&&(i=i.slice(0,l+1)+i.slice(l+2,-1)),t&&i!==t)continue;if(!t)if(null==m)m=i;else if(i!==m)continue;r=u[3]||"1",""===(i=H(u[1]||""))||"+"===i?i="1":"-"===i&&(i="-1")}else r="0","+"===(i=H(u[1]||""))?i="1":"-"===i?i="-1":""===i&&(i="0");for(l=0;l<r.length&&"0"===r.charAt(l);)l++;0<l&&(r=l<r.length?r.slice(l):"0"),u=v.fromString(i),o[r]=o[r]?o[r].add(u):u}}return En(function(n,t){o[t]=e.cast(o[t]),o[t].equ(s.O)&&delete o[t]},null,rn(o)),new I(o,t||m,e)}},terms:null,symbol:null,ring:null,_str:null,_tex:null,_n:null,_expr:null,_prim:null,_roots:null,_factors:null,dispose:function(){var n=this;return n._n&&n._n._n===n&&(n._n._n=null),n._c&&n._c._c===n&&(n._c._c=null),n.terms=null,n.symbol=null,n.ring=null,n._str=null,n._tex=null,n._n=null,n._c=null,n._expr=null,n._prim=null,n._roots=null,n._factors=null,n},isInt:function(){var n,t=this.terms;if(Cn(this.ring.NumberClass,Z))return!0;for(n=t.length-1;0<=n;n--)if(!t[n].c.isInt())return!1;return!0},isReal:function(){var n,t=this.terms;if(!Cn(this.ring.NumberClass,v))return!0;for(n=t.length-1;0<=n;n--)if(!t[n].c.isReal())return!1;return!0},isImag:function(){var n,t=this.terms;if(!Cn(this.ring.NumberClass,v))return!1;for(n=t.length-1;0<=n;n--)if(!t[n].c.isImag())return!1;return!0},isMono:function(){var n=this.terms;return 1===n.length&&0!==n[0].e},isConst:function(){return 0===this.deg()},isUni:function(n,t){return n=String(n||"x"),this.symbol===n&&(!0!==t||0!==this.deg())},deg:function(){var n=this.terms;return n.length?n[0].e:0},maxdeg:function(){return this.deg()},mindeg:function(){var n=this.terms;return n.length?n[n.length-1].e:0},term:function(e,n){var t=this.terms,r=this.ring,i=this.symbol;return I(!0===n?t.reduce(function(n,t){return e===t.e?[t]:n},[]):0<=e&&e<t.length?[t[e]]:[],i,r)},ltm:function(n){var t=this.terms,e=this.ring,r=this.symbol;return!0===n?I(t.length?[t[0]]:[],r,e):t.length?t[0]:q(0,0,e)},ttm:function(n){var t=this.terms,e=this.ring,r=this.symbol;return!0===n?I(t.length?[t[t.length-1]]:[],r,e):t.length?t[t.length-1]:q(0,0,e)},lm:function(){return this.ltm(!1).e},lc:function(){return this.ltm(!1).c},tm:function(){return this.ttm(!1).e},tc:function(){return this.ttm(!1).c},cc:function(){var n=this.terms;return n.length&&0===n[n.length-1].e?n[n.length-1].c:this.ring.Zero()},c:function(){return this.cc()},monic:function(){var n,t,e,r=this,i=J.Arithmetic,u=r.lc();if(u.equ(i.I)||u.equ(i.O))return r;if(r.ring.isField())return I(r.terms.map(function(n){return n.div(u)}),r.symbol,r.ring);for(e=!0,n=(t=r.terms).length-1;0<n;n--)if(!u.divides(t[n].c)){e=!1;break}return e?I(r.terms.map(function(n){return n.div(u)}),r.symbol,r.ring):u.lt(i.O)?r.neg():r},primitive:function(n){var t,e,r,i,u,l=this,s=l.symbol,o=l.ring,m=o.associatedField(),c=l.terms,a=J.Arithmetic;return null==l._prim&&(c.length?Cn(o.NumberClass,v)?(i=l.isReal(),u=l.isImag(),i||u?u?(e=c.reduce(function(n,t){return a.mul(n,t.c.imag().den)},a.I),t=c.map(function(n){return n.c.mul(e).imag().num}),r=Nt(t),t=t.map(function(n){return a.div(n,r)}),a.gt(a.O,t[0])&&(t=t.map(function(n){return a.neg(n)}),r=a.neg(r)),l._prim=[I(t.map(function(n,t){return q(n,c[t].e,o)}),s,o),m.create(v.Img().mul(p(r,e).simpl()))]):(e=c.reduce(function(n,t){return a.mul(n,t.c.real().den)},a.I),t=c.map(function(n){return n.c.mul(e).real().num}),r=Nt(t),t=t.map(function(n){return a.div(n,r)}),a.gt(a.O,t[0])&&(t=t.map(function(n){return a.neg(n)}),r=a.neg(r)),l._prim=[I(t.map(function(n,t){return q(n,c[t].e,o)}),s,o),m.create(p(r,e).simpl())]):(r=o.gcd(c.map(function(n){return n.c})).simpl(),l._prim=[I(c.map(function(n){return q(n.c.div(r),n.e,o)}),s,o),r])):(e=Cn(o.NumberClass,Z)?a.I:c.reduce(function(n,t){return a.mul(n,t.c.den)},a.I),t=c.map(function(n){return n.c.mul(e).num}),r=Nt(t),t=t.map(function(n){return a.div(n,r)}),a.gt(a.O,t[0])&&(t=t.map(function(n){return a.neg(n)}),r=a.neg(r)),l._prim=[I(t.map(function(n,t){return q(n,c[t].e,o)}),s,o),m.create(p(r,e).simpl())]):l._prim=[l,m.One()]),!0===n?l._prim.slice():l._prim[0]},content:function(){return this.primitive(!0)[1]},roots:function(){var n,t,e,r,i,u,l,s,o,m,c,a,f,h=this.ring,d=J.Arithmetic,g=d.O;if(null==this._roots){if(n=[],!this.isConst()&&(this.isImag()||this.isReal())&&(0<(e=(t=this.primitive()).terms)[e.length-1].e&&n.push([p.Zero(),e[e.length-1].e]),1<e.length)){for(i=(l=Lt((Cn(h.NumberClass,v)?e[e.length-1].c.real():e[e.length-1].c).num,!0)).get(),l.dispose(),u=(l=Lt((Cn(h.NumberClass,v)?e[0].c.real():e[0].c).num,!0)).get(),l.dispose(),l=L([i.length,u.length]);l.hasNext();){for(s=l.next(),o=p(i[s[0]],u[s[1]]).simpl(),m=p(d.neg(i[s[0]]),u[s[1]]).simpl(),r=t,f=!(a=c=0);f&&0<r.deg();)f=!1,r.evaluate(o).equ(g)&&(c++,f=!0),r.evaluate(m).equ(g)&&(a++,f=!0),f&&(r=r.d());0<c&&n.push([o,c]),0<a&&n.push([m,a])}l.dispose()}this._roots=n}return this._roots.map(function(n){return n.slice()})},factors:function(){var n,t,e,r,i,u,l,s,o,m=this.ring,c=this.symbol,a=J.Arithmetic;if(null==this._factors){if(s=this.primitive(!0),o=this.roots(),n=s[1],s=s[0],t=[],o.length){for(i=0,u=o.length;i<u;i++)r=o[i],e=I([a.neg(r[0].num),r[0].den],c,m),t.push([e,r[1]]),s=s.div(e.pow(r[1]));Cn(m.NumberClass,v)&&!s.isReal()||(l=Cn(m.NumberClass,Z)?a.I:Zt(s.terms.map(Cn(m.NumberClass,v)?function(n){return n.c.real().den}:function(n){return n.c.den})),a.equ(a.I,l)||(n=n.div(l),s=s.mul(l))),0<s.deg()?t.push([s,1]):n=n.mul(s.cc())}t.length||t.push([s,1]),this._factors=[t,n]}return[this._factors[0].slice(),this._factors[1]]},equ:function(n){this.ring;var t,e,r=J.Arithmetic,i=r.O,u=this.terms;if(r.isNumber(n))return r.equ(i,n)?0===u.length:1===u.length&&u[0].c.equ(n)&&0===u[0].e;if(Nn(n,a))return n.equ(i)?0===u.length:1===u.length&&u[0].c.equ(n)&&0===u[0].e;if(Nn(n,I)){if(t=n.terms,u.length!==t.length)return!1;for(e=u.length-1;0<=e;e--)if(!u[e].equ(t[e]))return!1;return!0}return Nn(n,[w,R])?n.equ(this):Nn(n,[S,h,C])?(Nn(n,[S,h])&&(n=C(n)),!(1<u.length)&&(0===u.length?n.c().equ(i):((i=u[0].toTerm(this.symbol)).length||(i="1"),i===n.symbol&&n.c().equ(u[0].c)))):Nn(n,N)?this.toExpr().equ(n):!!On(n)&&(n===this.toString()||n===this.toTex())},gt:function(n){var t=J.Arithmetic;return Nn(n,a)||t.isNumber(n)?!this.isConst()||this.cc().gt(n):Nn(n,I)?0<q.cmp(this.ltm(),n.ltm(),!0):Nn(n,[R,w])?n.lt(this):!!Nn(n,[N,C,h,S])&&this.toExpr().gt(n)},gte:function(n){var t=J.Arithmetic;return Nn(n,a)||t.isNumber(n)?!this.isConst()||this.cc().gte(n):Nn(n,I)?0<=q.cmp(this.ltm(),n.ltm(),!0):Nn(n,[R,w])?n.lte(this):!!Nn(n,[N,C,h,S])&&this.toExpr().gte(n)},lt:function(n){var t=J.Arithmetic;return Nn(n,a)||t.isNumber(n)?this.isConst()&&this.cc().lt(n):Nn(n,I)?q.cmp(this.ltm(),n.ltm(),!0)<0:Nn(n,[R,w])?n.gt(this):!!Nn(n,[N,C,h,S])&&this.toExpr().lt(n)},lte:function(n){var t=J.Arithmetic;return Nn(n,a)||t.isNumber(n)?this.isConst()&&this.cc().lte(n):Nn(n,I)?q.cmp(this.ltm(),n.ltm(),!0)<=0:Nn(n,[R,w])?n.gte(this):!!Nn(n,[N,C,h,S])&&this.toExpr().lte(n)},real:function(){var t=this.ring;return Cn(t.NumberClass,v)?I(this.terms.map(function(n){return q(n.c.real(),n.e,t)}),this.symbol,t):this},imag:function(){var t=this.ring;return Cn(t.NumberClass,v)?I(this.terms.map(function(n){return q(n.c.imag(),n.e,t)}),this.symbol,t):I([],this.symbol,t)},abs:function(){return this.lc().lt(J.Arithmetic.O)?this.neg():this},conj:function(){var n=this,t=n.ring;return null==n._c&&(Cn(t.NumberClass,v)?(n._c=I(n.terms.map(function(n){return q(n.c.conj(),n.e,t)}),n.symbol,t),n._c._c=n):n._c=n),n._c},neg:function(){var t=this;J.Arithmetic;return null==t._n&&(t._n=I(Dn(t.terms.length,function(n){return t.terms[n].neg()}),t.symbol,t.ring),t._n._n=t),t._n},inv:yn,add:function(n){var t=J.Arithmetic;return Nn(n,[N,C,h,S])?this.toExpr().add(n):Nn(n,[R,w])?n.add(this):t.isNumber(n)||Nn(n,[a,I])?I.Add(n,this.clone()):this},sub:function(n){var t=J.Arithmetic;return Nn(n,[N,C,h,S])?this.toExpr().sub(n):Nn(n,[R,w])?n.neg().add(this):t.isNumber(n)||Nn(n,[a,I])?I.Add(n,this.clone(),!0):this},mul:function(n){var t=J.Arithmetic;return Nn(n,[N,C,h,S])?this.toExpr().mul(n):Nn(n,[R,w])?n.mul(this):t.isNumber(n)||Nn(n,[a,I])?I.Mul(n,this.clone()):this},div:function(n,t){return Nn(n,R)?R(w(this,n.num.symbol,n.num.ring)).div(n):Nn(n,w)?w(this,n.symbol,n.ring).div(n,t):Nn(n,[I,a])||J.Arithmetic.isNumber(n)?I.Div(this,n,!0===t):this},multidiv:function(n,t){var e,r,i,u,l,s,o,m,c;J.Arithmetic;if(t=!0===t,Nn(n,I)&&(n=[n]),!n||!n.length)return t?[[],this]:[];for(r=Dn(u=n.length,function(){return[]}),i=[],e=this.clone();e.terms.length;){for(s=e.ltm(),c=!1,l=0;l<u;l++)if((o=n[l].ltm()).divides(s)){c=!0;break}c?(m=s.div(o),r[l]=he(r[l],[m],q,!1,e.ring),e.terms=he(e.terms,n[l].terms.map(function(n){return n.mul(m)}),q,!0,e.ring)):(e.terms.shift(),t&&(i=he(i,[s],q,!1,e.ring)))}return r=r.map(function(n){return I(n,e.symbol,e.ring)}),t?[r,I(i,e.symbol,e.ring)]:r},mod:function(n){return this.div(n,!0)[1]},multimod:function(n){return this.multidiv(n,!0)[1]},divmod:function(n){return this.div(n,!0)},multidivmod:function(n){return this.multidiv(n,!0)},divides:function(n){var t=J.Arithmetic;return!this.equ(t.O)&&(!!Nn(n,R)||((Nn(n,a)||t.isNumber(n))&&(n=I(n,this.symbol,this.ring)),!!Nn(n,o)&&n.mod(this).equ(t.O)))},pow:function(n){var t,e,r=J.Arithmetic;if((n=Z.cast(n)).lt(r.O)||n.gt(un))return null;if(0===(n=r.val(n.num)))return I.One(this.symbol,this.ring);if(1===n)return this;if(2===n)return I.Mul(this,this.clone());for(t=I.One(this.symbol,this.ring),e=this.clone();0!==n;)1&n&&(t=I.Mul(e,t)),n>>=1,e=I.Mul(e,e);return t},rad:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).equ(t.I)?this:ft(this,n)},compose:function(n){var t,e,r,i,u=this,l=J.Arithmetic;l.O;if(Nn(n,C)&&(n=N(n)),Nn(n,N)&&(n=I.fromExpr(n,u.symbol,u.ring)),l.isNumber(n)||Nn(n,a))return I(u.evaluate(n),u.symbol,u.ring);if(Nn(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<r;)r--,t=I.Mul(n,t),i<e.length&&r===e[i].e&&(t=I.Add(e[i++].c,t));return t}return u},shift:function(t){var e=this,n=J.Arithmetic;return 0===(t=n.val(t))?e:I(t<0?e.terms.map(function(n){return n.e<-t?null:q(n.c,n.e+t,e.ring)}).filter(q.isNonZero):e.terms.map(function(n){return q(n.c,n.e+t,e.ring)}),e.symbol,e.ring)},d:function(r){var i=this,u=J.Arithmetic;u.O;return null==r&&(r=1),(r=+r)<0?null:0===r||0===i.terms.length?i:r>=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=Dn(u,function(n){return t+"_"+(n+1)});return this.terms.reduce(function(n,e){if(!e.e)return n;var t=j(u,e.e),r=t.total();return t.get().reduce(function(n,t){return n.add(w(A(i.cast(e.c).div(r),Dn(u,function(n){return-1===t.indexOf(n)?0:1})),l,i))},n)},w(A(this.cc(),Dn(u,0)),l,i))},evaluate:function(n){var t,e,r,i=this.ring,u=J.Arithmetic,l=u.O,s=this.terms;if(!s.length)return i.Zero();for(Nn(n,a)||u.isNumber(n)||!In(n)||(n=n[this.symbol]),n=n||l,t=s[0].e,r=s[0].c,e=1;0<t;)t--,r=r.mul(n),e<s.length&&t===s[e].e&&(r=s[e++].c.add(r));return r},toString:function(){var n,t,e,r,i,u="",l=!1,s=J.Arithmetic;if(null==this._str){for(n=this.terms,e=this.symbol,r=0,i=n.length;r<i;r++)t=n[r],u+=(!l||(!Nn(t.c,[R,d])||t.c.isConst(!0)&&t.c.den.equ(s.I))&&t.c.isReal()&&!t.c.gt(s.O)?"":"+")+t.toTerm(e),l=!0;this._str=u.length?u:"0"}return this._str},toTex:function(){var n,t,e,r,i,u="",l=!1,s=J.Arithmetic;if(null==this._tex){for(n=this.terms,e=this.symbol,r=0,i=n.length;r<i;r++)t=n[r],u+=(!l||(!Nn(t.c,[R,d])||t.c.isConst(!0)&&t.c.den.equ(s.I))&&t.c.isReal()&&!t.c.gt(s.O)?"":"+")+t.toTerm(e,!0),l=!0;this._tex=u.length?u:"0"}return this._tex},toDec:function(n){for(var t,e="",r=!1,i=J.Arithmetic,u=this.terms,l=this.symbol,s=0,o=u.length;s<o;s++)t=u[s],e+=(!r||(!Nn(t.c,[R,d])||t.c.isConst(!0)&&t.c.den.equ(i.I))&&t.c.isReal()&&!t.c.gt(i.O)?"":"+")+t.toTerm(l,!1,!1,!0,n),r=!0;return e.length||(e="0",wn(n)&&0<n&&(e+="."+new Array(n+1).join("0"))),e},toExpr:function(){var n,t,e,r,i,u=J.Arithmetic.O;if(null==this._expr){for(t=this.symbol,r=[],e=(n=this.terms).length-1;0<=e;e--)i=n[e].toTerm(t,!1,!0),r.push(C(i.length?i:"1",n[e].c));r.length||r.push(C(1,u)),this._expr=N(r)}return this._expr}})).cast=function(n,t,e){return e=e||M.Q(),t=String(t||"x"),ke(function(n){return Nn(n,I)&&n.ring===e},function(n){return On(n)?I.fromString(n,t,e):new I(n,t,e)})(n)},A=n({constructor:function n(t,e,r){if(!Nn(this,n))return new n(t,e,r);Nn(t,n)?(r=r||t.ring,e=t.e.slice(),t=t.c):Nn(t,q)&&(r=r||t.ring,e=[t.e],t=t.c),this.ring=Nn(r,M)?r:M.Q(),Nn(t,w)&&t.ring.NumberClass!==this.ring.NumberClass&&!Cn(t.ring.NumberClass,v)&&Cn(t.ring.NumberClass,[Z,p])&&Cn(this.ring.NumberClass,[p,v])&&(t=w(t,t.symbol,this.ring)),this.c=Nn(t,[w,R,d])?t:this.ring.cast(t||0),this.e=qn(e)?e:[+(e||0)]},__static__:{isNonZero:function(n){return Nn(n,A)&&!n.c.equ(J.Arithmetic.O)},cmp:function(n,t,e){function r(n,t,e){return e>=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((qn(n)||An(n))&&(qn(t)||An(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||Nn(t.c,[w,R,d])||Nn(e.c,[w,R,d])||!t.ring.hasGCD()?t.ring.One():t.ring.gcd(t.c,e.c),Dn(Q.max(t.e.length,e.e.length),function(n){return n<t.e.length&&n<e.e.length?Q.min(t.e[n],e.e[n]):0}))},lcm:function(t,e,n){return A(!0!==n||Nn(t.c,[w,R,d])||Nn(e.c,[w,R,d])||!t.ring.hasGCD()?t.c.mul(e.c):t.ring.lcm(t.c,e.c),Dn(Q.max(t.e.length,e.e.length),function(n){return n<t.e.length&&n<e.e.length?Q.max(t.e[n],e.e[n]):(n<t.e.length?t:e).e[n]}))}},ring:null,c:null,e:null,dispose:function(){return this.ring=null,this.c=null,this.e=null,this},clone:function(){return new A(this)},cast:function(n){return n===this.ring?this:new A(this.c,this.e,n)},equ:function(n){return Nn(n,A)?0===A.cmp(this,n,!0):this.c.equ(n)},neg:function(){return A(this.c.neg(),this.e.slice(),this.ring)},add:function(n){return Nn(n,A)?A(this.c.add(n.c),this.e.slice(),this.ring):A(this.c.add(n),this.e.slice(),this.ring)},sub:function(n){return Nn(n,A)?A(this.c.sub(n.c),this.e.slice(),this.ring):A(this.c.sub(n),this.e.slice(),this.ring)},mul:function(t){var e=this;return Nn(t,A)?A(e.c.mul(t.c),Dn(Q.max(e.e.length,t.e.length),function(n){return n<e.e.length&&n<t.e.length?e.e[n]+t.e[n]:(n<t.e.length?t:e).e[n]}),e.ring):A(e.c.mul(t),e.e.slice(),e.ring)},div:function(t){var e=this;return Nn(t,A)?A(e.c.div(t.c),Dn(Q.max(e.e.length,t.e.length),function(n){return n<e.e.length&&n<t.e.length?Q.max(0,e.e[n]-t.e[n]):n<t.e.length?0:e.e[n]}),e.ring):A(e.c.div(t),e.e.slice(),e.ring)},divides:function(n){var t,e=this.e,r=n.e,i=Q.max(e.length,r.length);if(!this.c.divides(n.c))return!1;for(t=0;t<i&&!(t>=e.length);t++)if(t>=r.length){if(0<e[t])return!1}else if(e[t]>r[t])return!1;return!0},pow:function(t){var e=this;return 1===(t=+t)?e:A(e.c.pow(t),Dn(e.e.length,function(n){return Q.floor(e.e[n]*t)}),e.ring)},rad:function(t){var e=this;return 1===(t=+t)?e:A(e.c.rad(t),Dn(e.e.length,function(n){return Q.max(Q.floor(e.e[n]/t),Q.min(1,e.e[n]))}),e.ring)},toTerm:function(n,t,e,r,i){var u,l=this.e,s=this.c,o=J.Arithmetic;if(!0===r){if(u=n.reduce(function(n,t,e){return 0<l[e]?n+(n.length?"*":"")+t+(1<l[e]?"^"+String(l[e]):""):n},""),!0===e)return u;u=u.length?(s.equ(o.I)?"":s.equ(o.J)?"-":(!Nn(s,[w,R,d])||s.isConst(!0))&&s.isReal()?s.toDec(i):"("+s.toDec(i)+")")+u:Nn(s,[w,R,d])&&!s.isConst(!0)?"("+s.toDec(i)+")":s.toDec(i)}else if(!0===t){if(u=n.reduce(function(n,t,e){return 0<l[e]?n+Zn(t)+(1<l[e]?"^{"+Mn(l[e])+"}":""):n},""),!0===e)return u;u=u.length?(s.equ(o.I)?"":s.equ(o.J)?"-":(!Nn(s,[w,R,d])||s.isConst(!0))&&s.isReal()?s.toTex():"("+s.toTex()+")")+u:Nn(s,[w,R,d])&&!s.isConst(!0)?"("+s.toTex()+")":s.toTex()}else{if(u=n.reduce(function(n,t,e){return 0<l[e]?n+(n.length?"*":"")+t+(1<l[e]?"^"+String(l[e]):""):n},""),!0===e)return u;u=u.length?(s.equ(o.I)?"":s.equ(o.J)?"-":(!Nn(s,w)||s.isConst(!0))&&(!Nn(s,[R,d])||s.isConst(!0)&&s.den.equ(o.I))&&s.isReal()?s.toString(!0)+"*":"("+s.toString()+")*")+u:Nn(s,w)&&!s.isConst(!0)||Nn(s,[R,d])&&(!s.isConst(!0)||!s.den.equ(o.I))?"("+s.toString()+")":s.toString()}return u},toString:function(){return"("+this.c.toString()+",["+this.e.join(",")+"])"}}),(w=J.MultiPolynomial=n(o,{constructor:function n(m,t,e){var r,c=this,i=J.Arithmetic;if(!Nn(c,n))return new n(m,t,e);Nn(m,[S,h,C])&&(m=N(m)),Nn(m,N)&&(m=n.fromExpr(m,t||["x"],e||M.C())),Nn(m,n)?(c.ring=e||m.ring,c.symbol=t||m.symbol,c.terms=c.ring!==m.ring||c.symbol.length!==m.symbol.length?m.terms.map(function(n){return A(n.c,c.symbol.length<=m.symbol.length?n.e.slice(0,c.symbol.length):n.e.concat(Dn(c.symbol.length-m.symbol.length,0)),c.ring)}):m.terms.slice(),c._rsym=m._rsym?m._rsym.slice():null):Nn(m,I)?(c.ring=e||m.ring,c.symbol=qn(t)&&t.length?t:[m.symbol],-1===(r=c.symbol.indexOf(m.symbol))&&(r=0),c.terms=m.terms.map(function(t){return A(t.c,Dn(c.symbol.length,function(n){return n===r?t.e:0}),c.ring)})):(c.ring=Nn(e,M)?e:M.Q(),qn(t=t||"x")?t.length||(t=["x"]):t=[String(t)],c.symbol=t,(Nn(m,a)||i.isNumber(m)||On(m))&&(m=A(m,Dn(c.symbol.length,0),c.ring)),Nn(m,A)?c.terms=m.equ(i.O)?[]:[m]:qn(m)||An(m)?(An(m)&&(m=G.call(m)),m.length&&!Nn(m[0],A)?c.terms=m.map(function(n,t){return A(n,Dn(c.symbol.length,function(n){return 0===n?t:0}),c.ring)}).filter(A.isNonZero).reverse():c.terms=m):In(m)?c.terms=rn(m).map(function(n){for(var t,e,r,i=Dn(c.symbol.length,0),u=m[n],l=n.split("*"),s=0,o=l.length;s<o;s++)(r=H(l[s])).length&&"1"!==r&&(r=-1!==(t=r.indexOf("^"))?(e=r.slice(0,t),parseInt(r.slice(t+1),10)):(e=r,1),i[-1===(t=c.symbol.indexOf(e))?0:t]=r);return A(u,i,c.ring)}).sort(A.sortDecr):c.terms=[])},__static__:{Term:A,Zero:function(n,t){return new w([],n||["x"],t||M.Q())},One:function(n,t){return t=t||M.Q(),new w(t.One(),n||["x"],t)},MinusOne:function(n,t){return t=t||M.Q(),new w(t.MinusOne(),n||["x"],t)},hasInverse:function(){return!1},cast:null,gcd:Tt,xgcd:Pt,lcm:$t,Add:function(n,t,e,r){var i,u=J.Arithmetic;return Nn(n,I)&&(n=w(n,t.symbol,t.ring)),Nn(n,w)?n.terms.length&&((r=!0===r)&&(i=t._rsym,t=t.recur(!1),n=n.recur(!1)),t.terms=he(t.terms,n.terms,A,!0===e,t.ring),r&&i&&(t=t.recur(i))):(Nn(n,a)||u.isNumber(n))&&((n=A(n,Dn(t.symbol.length,0),t.ring)).equ(u.O)||(n=t.terms.length?he([t.terms.pop()],[n],A,!0===e,t.ring):[n],t.terms=t.terms.concat(n))),t},Mul:function(n,t,e){var r,i,u=J.Arithmetic,l=u.O;if(!t.terms.length)return t;if(Nn(n,I)&&(n=w(n,t.symbol,t.ring)),Nn(n,w))n.terms.length?((e=!0===e)&&(i=t._rsym,t=t.recur(!1),n=n.recur(!1)),t.terms=de(t.terms,n.terms,A,t.ring),e&&i&&(t=t.recur(i))):t.terms=[];else if(Nn(n,a)||u.isNumber(n))if((n=t.ring.cast(n)).equ(l))t.terms=[];else if(!n.equ(u.I))for(r=t.terms.length-1;0<=r;r--)t.terms[r]=t.terms[r].mul(n);return t},Div:function(t,e,n,r){var i,u,l=J.Arithmetic,s=l.O,o=l.I;if(n=!0===n,Nn(e,I)&&(e=w(e,t.symbol,t.ring)),Nn(e,w)){if(!e.terms.length)throw new Error("Division by zero in Abacus.MultiPolynomial!");return((r=!0===r)&&(e=e.recur(!1)),e.isConst())?(u=(e=e.cc()).equ(o)?t:w(Dn(t.terms.length,function(n){return t.terms[n].div(e)}),t.symbol,t.ring),n?[u,w.Zero(t.symbol,t.ring)]:u):(r&&(i=t._rsym,t=t.recur(!1)),u=ge(t.terms,e.terms,A,n,t.ring),u=n?[w(u[0],t.symbol,t.ring),w(u[1],t.symbol,t.ring)]:w(u,t.symbol,t.ring),r&&i&&(n?(u[0]=u[0].recur(i),u[1]=u[1].recur(i)):u=u.recur(i)),u)}if(Nn(e,a)||l.isNumber(e)){if((e=t.ring.cast(e)).equ(s))throw new Error("Division by zero in Abacus.MultiPolynomial!");return u=e.equ(o)?t:w(Dn(t.terms.length,function(n){return t.terms[n].div(e)}),t.symbol,t.ring),n?[u,w.Zero(t.symbol,t.ring)]:u}return t},C:function(n,t,e){return new w(n||J.Arithmetic.O,t||["x"],e||M.Q())},fromExpr:function(n,t,e){if(!Nn(n,N))return null;e=e||M.Q(),t=t||["x"];for(var r,i,u=n.symbols(),l=J.Arithmetic.O,s={},o=u.length-1;0<=o;o--)r=u[o],(i=n.terms[r].c()).equ(l)||(s[r]=i);return new w(s,t,e)},fromString:function(n,t,e){var r,i,u,l,s,o,m,c=J.Arithmetic,a={},f=[],h=/(\(?(?:(?:[\+\-])?\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+\}?)?(?:\s*\*?\s*[a-zA-Z](?:_\{?\d+\}?)?(?:\^\{?\d+\}?)?)*)?)?/g,d=/([a-zA-Z])(?:_\{?(\d+)\}?)?(?:\^\{?(\d+)\}?)?/g;if(e=e||M.Q(),!(n=H(String(n))).length)return w.Zero(t||["x"],e);for(;m=h.exec(n);){if(!m[0].length){if(h.lastIndex<n.length){h.lastIndex++;continue}break}if(H(m[0]).length){if(m[2]){for(i=m[2],""===(r=H(m[1]||""))||"+"===r?r="1":"-"===r&&(r="-1"),l={};o=d.exec(i);)s=o[1]+(o[2]?"_"+o[2]:""),0===(o=o[3]?parseInt(o[3],10):1)?l[1]=0:t&&-1===t.indexOf(s)||(t||-1!==f.indexOf(s)||f.push(s),l[s]=z.call(l,s)?l[s]+o:o);z.call(l,"1")&&1<rn(l).length&&delete l[1]}else i="1","+"===(r=H(m[1]||""))?r="1":"-"===r?r="-1":""===r&&(r="0"),(l={})[i]=0;u=v.fromString(r),(m=En(function(n,t){return n+(n.length?"*":"")+t+(1<l[t]?"^"+String(l[t]):"")},"",rn(l).sort())).length&&(a[m]=z.call(a,m)?a[m].add(u):u)}}return En(function(n,t){a[t]=e.cast(a[t]),a[t].equ(c.O)&&delete a[t]},null,rn(a)),new w(a,t||f.sort(),e)}},terms:null,symbol:null,ring:null,_n:null,_c:null,_str:null,_tex:null,_expr:null,_prim:null,_flat:null,_recur:null,_rsym:null,dispose:function(){var n=this;return n.terms=null,n.symbol=null,n.ring=null,n._n&&n===n._n._n&&(n._n._n=null),n._c&&n===n._c._c&&(n._c._c=null),n._n=null,n._c=null,n._str=null,n._tex=null,n._expr=null,n._prim=null,n._flat=null,n._recur=null,n._rsym=null,n},isInt:function(){var n,t=this.terms;if(Cn(this.ring.NumberClass,Z))return!0;for(n=t.length-1;0<=n;n--)if(!t[n].c.isInt())return!1;return!0},isReal:function(){var n,t=this.terms;if(!Cn(this.ring.NumberClass,v))return!0;for(n=t.length-1;0<=n;n--)if(!t[n].c.isReal())return!1;return!0},isImag:function(){var n,t=this.terms;if(!Cn(this.ring.NumberClass,v))return!1;for(n=t.length-1;0<=n;n--)if(!t[n].c.isImag())return!1;return!0},isMono:function(){var n=this.terms;return 1===n.length&&(!Nn(n[0].c,w)||n[0].c.isMono())&&0!==A.cmp(n[0].e,[0])},isConst:function(n){var t=this.terms;return n=!0===n,0===t.length||1===t.length&&(!n||!Nn(t[0].c,w)||t[0].c.isConst(n))&&0===A.cmp(t[0].e,[0])},isUni:function(n,t){var e,r,i,u=this.terms,l=this.symbol.indexOf(String(n||"x"));if(-1===l)return!1;for(t=!0===t,i=0,r=u.length-1;0<=r;r--)if(e=u[r].e,i=Q.max(i,e[l]),0!==A.cmp(e.slice(0,l).concat(e.slice(l+1)),[0]))return!1;return!t||0!==i},isRecur:function(n){n=!1!==n;for(var t=this.terms,e=t.length-1;0<=e;e--)if(Nn(t[e].c,w)&&(n||!t[e].c.isConst(!0)))return!0;return!1},deg:function(n,t){var e,r=this.terms,i=this.symbol;return arguments.length?(t=!0===t,-1!==(e=i.indexOf(String(n||"x")))&&r.length?t&&Nn(term[0].c,w)?r[0].e[e]+term[0].c.deg(n,t):r[0].e[e]:0):r.length?r[0].e:Dn(i.length,0)},maxdeg:function(e,r){var i,u=this,n=u.terms,t=u.symbol;return r=!0===r,arguments.length&&!0===e?En(function(n,t){return Q.max(n,u.maxdeg(t))},0,t):-1!==(i=arguments.length?t.indexOf(String(e||"x")):0)&&n.length?(e=t[i],En(function(n,t){return r&&Nn(t.c,w)?Q.max(n,t.e[i],t.e[i]+t.c.maxdeg(e,r)):Q.max(n,t.e[i])},0,n)):0},mindeg:function(e,r){var i,u=this,n=u.terms,t=u.symbol;return r=!0===r,arguments.length&&!0===e?En(function(n,t){return-1===n?u.mindeg(t,r):Q.min(n,u.mindeg(t,r))},-1,t):-1!==(i=arguments.length?t.indexOf(String(e||"x")):0)&&n.length?(e=t[i],En(function(n,t){t=t.e[i]+(r&&Nn(t.c,w)?t.c.mindeg(e,r):0);return-1===n?t:Q.min(n,t)},-1,n)):0},term:function(e,n){var t=this.terms,r=this.ring,i=this.symbol;return!0===n?t.reduce(function(n,t){return e===t.e.reduce(nt,0)&&(n=n.add(w([t],i,r))),n},w.Zero(i,r)):w(0<=e&&e<t.length?[t[e]]:[],i,r)},ltm:function(n,t){var e,r=this.terms,i=this.ring,u=this.symbol;return 1<arguments.length?-1!==(e=u.indexOf(String(t||"x")))&&r.length?(t=En(function(n,t){return(null==n||n.e[e]<t.e[e])&&(n=t),n},null,r),!0===n?w([t],u,i):t):!0===n?w([],u,i):A(i.Zero(),Dn(u.length,0),i):!0===n?w(r.length?[r[0]]:[],u,i):r.length?r[0]:A(0,Dn(u.length,0),i)},ttm:function(n,t){var e,r=this.terms,i=this.ring,u=this.symbol;return 1<arguments.length?-1!==(e=u.indexOf(String(t||"x")))&&r.length?(t=En(function(n,t){return(null==n||n.e[e]>t.e[e])&&(n=t),n},null,r),!0===n?w([t],u,i):t):!0===n?w([],u,i):A(i.Zero(),Dn(u.length,0),i):!0===n?w(r.length?[r[r.length-1]]:[],u,i):r.length?r[r.length-1]:A(0,Dn(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=J.Arithmetic,i=null;if(!1===u)return null==t._flat&&(t._flat=o.length<=1||!t.isRecur()?t:En(function(n,t){return n._add(Nn(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:En(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(qn(u))return En(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(En(function(n,t){var e,r=t.e[l],i=s-r,t=Nn(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,Dn(o.length,function(n){return l===n?s-t:0}))}).filter(A.isNonZero),o,m);n.isConst()&&Nn(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=J.Arithmetic,u=r.lc();if(u.equ(i.I)||u.equ(i.O)||Nn(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<n;n--)if(!u.divides(t[n].c)){e=!1;break}return e?w(r.terms.map(function(n){return n.div(u)}),r.symbol,r.ring):u.lt(i.O)?r.neg():r},primitive:function(n){var t,e,r,i,u,l=this,s=l.symbol,o=l.ring,m=o.associatedField(),c=l.terms,a=J.Arithmetic;return null==l._prim&&(c.length?l.isRecur()?(t=c.reduce(function(n,t){return n.push(Nn(t.c,w)?t.c.primitive(!0):[w([t],s,o),m.One()]),n},[]),r=m.gcd(t.map(function(n){return n[1]})),l._prim=[w(t.map(function(n,t){return A(n[0].mul(o.cast(n[1].div(r))),c[t].e,o)}),s,o),r]):Cn(o.NumberClass,v)?(i=l.isReal(),u=l.isImag(),i||u?u?(e=c.reduce(function(n,t){return a.mul(n,t.c.imag().den)},a.I),t=c.map(function(n){return n.c.mul(e).imag().num}),r=Nt(t),t=t.map(function(n){return a.div(n,r)}),a.gt(a.O,t[0])&&(t=t.map(function(n){return a.neg(n)}),r=a.neg(r)),l._prim=[w(t.map(function(n,t){return A(n,c[t].e,o)}),s,o),m.create(v.Img().mul(p(r,e).simpl()))]):(e=c.reduce(function(n,t){return a.mul(n,t.c.real().den)},a.I),t=c.map(function(n){return n.c.mul(e).real().num}),r=Nt(t),t=t.map(function(n){return a.div(n,r)}),a.gt(a.O,t[0])&&(t=t.map(function(n){return a.neg(n)}),r=a.neg(r)),l._prim=[w(t.map(function(n,t){return A(n,c[t].e,o)}),s,o),m.create(p(r,e).simpl())]):(r=o.gcd(c.map(function(n){return n.c})).simpl(),l._prim=[w(c.map(function(n){return A(n.c.div(r),n.e,o)}),s,o),r])):(e=Cn(o.NumberClass,Z)?a.I:c.reduce(function(n,t){return a.mul(n,t.c.den)},a.I),t=c.map(function(n){return n.c.mul(e).num}),r=Nt(t),t=t.map(function(n){return a.div(n,r)}),a.gt(a.O,t[0])&&(t=t.map(function(n){return a.neg(n)}),r=a.neg(r)),l._prim=[w(t.map(function(n,t){return A(n,c[t].e,o)}),s,o),m.create(p(r,e).simpl())]):l._prim=[l,m.One()]),!0===n?l._prim.slice():l._prim[0]},content:function(){return this.primitive(!0)[1]},equ:function(n,t){var e,r,i=J.Arithmetic,u=i.O,l=this.terms;if(i.isNumber(n))return i.equ(u,n)?0===l.length:1===l.length&&l[0].c.equ(n)&&0===A.cmp(l[0].e,[0]);if(Nn(n,a))return n.equ(u)?0===l.length:1===l.length&&l[0].c.equ(n)&&0===A.cmp(l[0].e,[0]);if(Nn(n,o)){if(t=!1!==t,n=Nn(n,I)?w(n,this.symbol,this.ring).terms:n,t||(l=this.recur(!1).terms,n=n.recur(!1)),e=n.terms,l.length!==e.length)return!1;for(r=l.length-1;0<=r;r--)if(!l[r].equ(e[r]))return!1;return!0}return Nn(n,R)?n.equ(this):Nn(n,[S,h,C])?(Nn(n,[S,h])&&(n=C(n)),!(1<l.length)&&(0===l.length?n.c().equ(u):((u=l[0].toTerm(this.symbol)).length||(u="1"),u===n.symbol&&n.c().equ(l[0].c)))):Nn(n,N)?this.toExpr().equ(n):!!On(n)&&(n===this.toString()||n===this.toTex())},gt:function(n){var t=J.Arithmetic;return Nn(n,a)||t.isNumber(n)?!this.isConst(!0)||this.cc().gt(n):Nn(n,R)?n.lt(this):Nn(n,o)?(Nn(n,I)&&(n=w(n,this.symbol,this.ring)),0<A.cmp(this.ltm(),n.ltm(),!0)):!!Nn(n,[N,C,h,S])&&this.toExpr().gt(n)},gte:function(n){var t=J.Arithmetic;return Nn(n,a)||t.isNumber(n)?!this.isConst(!0)||this.cc().gte(n):Nn(n,R)?n.lte(this):Nn(n,o)?(Nn(n,I)&&(n=w(n,this.symbol,this.ring)),0<=A.cmp(this.ltm(),n.ltm(),!0)):!!Nn(n,[N,C,h,S])&&this.toExpr().gte(n)},lt:function(n){var t=J.Arithmetic;return Nn(n,a)||t.isNumber(n)?this.isConst(!0)&&this.cc().lt(n):Nn(n,R)?n.gt(this):Nn(n,o)?(Nn(n,I)&&(n=w(n,this.symbol,this.ring)),A.cmp(this.ltm(),n.ltm(),!0)<0):!!Nn(n,[N,C,h,S])&&this.toExpr().lt(n)},lte:function(n){var t=J.Arithmetic;return Nn(n,a)||t.isNumber(n)?this.isConst(!0)&&this.cc().lte(n):Nn(n,R)?n.gte(this):Nn(n,o)?(Nn(n,I)&&(n=w(n,this.symbol,this.ring)),A.cmp(this.ltm(),n.ltm(),!0)<=0):!!Nn(n,[N,C,h,S])&&this.toExpr().lte(n)},real:function(){var t=this.ring;return Cn(t.NumberClass,v)?w(this.terms.map(function(n){return A(n.c.real(),n.e,t)}),this.symbol,t):this},imag:function(){var t=this.ring;return Cn(t.NumberClass,v)?w(this.terms.map(function(n){return A(n.c.imag(),n.e,t)}),this.symbol,t):w([],this.symbol,t)},abs:function(){return this.lc().lt(J.Arithmetic.O)?this.neg():this},conj:function(){var n=this,t=n.ring;return null==n._c&&(Cn(t.NumberClass,v)?(n._c=w(n.terms.map(function(n){return A(n.c.conj(),n.e,t)}),n.symbol,t),n._c._c=n):n._c=n),n._c},neg:function(){var t=this;J.Arithmetic;return null==t._n&&(t._n=w(Dn(t.terms.length,function(n){return t.terms[n].neg()}),t.symbol,t.ring),t._n._n=t),t._n},inv:yn,add:function(n){var t=J.Arithmetic;return Nn(n,[N,C,h,S])?this.toExpr().add(n):Nn(n,R)?n.add(this):t.isNumber(n)||Nn(n,[a,o])?w.Add(n,this.clone(),!1,!0):this},_add:function(n){return Nn(n,o)?w.Add(n,this.clone(),!1,!1):this.add(n)},sub:function(n){var t=J.Arithmetic;return Nn(n,[N,C,h,S])?this.toExpr().sub(n):Nn(n,R)?n.neg().add(this):t.isNumber(n)||Nn(n,[a,o])?w.Add(n,this.clone(),!0,!0):this},_sub:function(n){return Nn(n,o)?w.Add(n,this.clone(),!0,!1):this.sub(n)},mul:function(n){var t=J.Arithmetic;return Nn(n,[N,C,h,S])?this.toExpr().mul(n):Nn(n,R)?n.mul(this):t.isNumber(n)||Nn(n,[a,o])?w.Mul(n,this.clone(),!0):this},_mul:function(n){return Nn(n,o)?w.Mul(n,this.clone(),!1):this.mul(n)},div:function(n,t){return Nn(n,R)?R(this).div(n):Nn(n,[a,o])||J.Arithmetic.isNumber(n)?w.Div(this,n,!0===t,!0):this},_div:function(n,t){return Nn(n,o)?w.Div(this,n,!0===t,!1):this.div(n,t)},multidiv:function(n,t){var e,r,i,u,l,s,o,m,c,a=this._rsym;J.Arithmetic;if(t=!0===t,Nn(n,w)&&(n=[n]),!n||!n.length)return t?[[],this]:[];for(r=Dn(u=n.length,function(){return[]}),i=[],e=this.recur(!1).clone(),n=n.map(function(n){return n.recur(!1)});e.terms.length;){for(s=e.ltm(),c=!1,l=0;l<u;l++)if((o=n[l].ltm()).divides(s)){c=!0;break}c?(m=s.div(o),r[l]=he(r[l],[m],A,!1,e.ring),e.terms=he(e.terms,n[l].terms.map(function(n){return n.mul(m)}),A,!0,e.ring)):(e.terms.shift(),t&&(i=he(i,[s],A,!1,e.ring)))}return r=r.map(function(n){return n=w(n,e.symbol,e.ring),a&&(n=n.recur(a)),n}),t&&(i=w(i,e.symbol,e.ring),a&&(i=i.recur(a))),t?[r,i]:r},mod:function(n){return this.div(n,!0)[1]},_mod:function(n){return this._div(n,!0)[1]},multimod:function(n){return this.multidiv(n,!0)[1]},divmod:function(n){return this.div(n,!0)},_divmod:function(n){return this._div(n,!0)},multidivmod:function(n){return this.multidiv(n,!0)},divides:function(n){var t=J.Arithmetic;return!this.equ(t.O)&&(!!Nn(n,R)||((Nn(n,[I,a])||t.isNumber(n))&&(n=w(n,this.symbol,this.ring)),!!Nn(n,w)&&n.mod(this).equ(t.O)))},pow:function(n){var t,e,r=J.Arithmetic,i=this._rsym;if((n=Z.cast(n)).lt(r.O)||n.gt(un))return null;if(0===(n=r.val(n.num)))return w.One(this.symbol,this.ring);if(1===n)return this;if(2===n)return w.Mul(this,this.clone(),!0);for(t=w.One(this.symbol,this.ring),e=this.recur(!1).clone();0!==n;)1&n&&(t=w.Mul(e,t,!1)),n>>=1,e=w.Mul(e,e,!1);return i&&(t=t.recur(i)),t},rad:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).equ(t.I)?this:ft(this,n)},compose:function(n){var a=this.symbol,f=this.ring,t=this._rsym,h=J.Arithmetic,d=w.Zero(a,f),g=c(),n=function n(t,e,r){for(r=r||0;r<a.length&&0===t.maxdeg(a[r],!0);)r++;if(r>=a.length)return w(t.cc(),a,f);var i,u,l,s,o,m,c=t.terms;if(!c.length)return d;if(i=t.toString(),z.call(g,i))return g[i];for(o=z.call(e,a[r])?w(e[a[r]]||h.O,a,f):w([A(f.One(),Dn(a.length,function(n){return n===r?1:0}),f)],a,f),m=Nn(c[0].c,w)?n(c[0].c,e,r+1):w(c[0].c,a,f),u=c[0].e[r],s=m,l=1;0<u;)u--,s=w.Mul(o,s,!1),l<c.length&&u===c[l].e[r]&&(m=Nn(c[l].c,w)?n(c[l].c,e,r+1):c[l].c,s=w.Add(m,s,!1,!1),l++);return g[i]=s}(this.recur(!0),n||{});return t&&(n=n.recur(t)),n},shift:function(r,i){var u,n=this.symbol,l=this.ring,t=J.Arithmetic;return r=String(r||n[0]),i=i||0,-1===(u=n.indexOf(r))&&(u=0),r=n[u],0===(i=t.val(i))?this:i<0?-i>this.maxdeg(r,!0)?w.Zero(n,l):w(this.terms.map(function(n){var t,e;return Nn((n=n.clone()).c,w)?(e=n.e[u],t=i,0<e&&(-t<=e?(n.e[u]+=t,t=0):(n.e[u]=0,t+=e)),t<0&&(n.c=n.c.shift(r,t))):n.e[u]>=-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 Nn((n=n.clone()).c,w)&&0<n.c.maxdeg(r,!0)?n.c=n.c.shift(r,i):n.e[u]+=i,n}).sort(A.sortDecr),n,l)},d:function(r,i){var u,n=this.symbol,t=this.ring,l=J.Arithmetic,s=l.O,o=l.I;return r=String(r||n[0]),null==i&&(i=1),(i=l.val(i))<0?null:0===i?this:(-1===(u=n.indexOf(r))&&(u=0),r=n[u],i>this.maxdeg(r,!0)?w.Zero(n,t):w(this.terms.map(function(n){var t,e;if(Nn(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]=Q.max(n.e[u]-1,0),0<e&&!n.c.equ(s););return n}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}).filter(A.isNonZero).sort(A.sortDecr),n,t))},evaluate:function(n){var a=this.symbol,f=this.ring,h=J.Arithmetic.O,d=c();return function n(t,e,r){for(r=r||0;r<a.length&&0===t.maxdeg(a[r],!0);)r++;if(r>=a.length)return t.cc();var i,u,l,s,o,m,c=t.terms;if(!c.length)return f.Zero();if(i=t.toString(),z.call(d,i))return d[i];for(o=(z.call(e,a[r])?e[a[r]]:h)||h,m=Nn(c[0].c,w)?n(c[0].c,e,r+1):c[0].c,u=c[0].e[r],s=m,l=1;0<u;)u--,s=s.mul(o),l<c.length&&u===c[l].e[r]&&(s=(m=Nn(c[l].c,w)?n(c[l].c,e,r+1):c[l].c).add(s),l++);return d[i]=s}(this.recur(!0),n||{})},toString:function(){var n,t,e,r,i,u="",l=!1,s=J.Arithmetic;if(null==this._str){for(n=this.terms,e=this.symbol,r=0,i=n.length;r<i;r++)t=n[r],u+=(l&&(Nn(t.c,w)&&!t.c.isConst(!0)||Nn(t.c,[R,d])&&(!t.c.isConst(!0)||!t.c.den.equ(s.I))||!t.c.isReal()||t.c.gt(s.O))?"+":"")+t.toTerm(e),l=!0;this._str=u.length?u:"0"}return this._str},toTex:function(){var n,t,e,r,i,u="",l=!1,s=J.Arithmetic;if(null==this._tex){for(n=this.terms,e=this.symbol,r=0,i=n.length;r<i;r++)t=n[r],u+=(l&&(Nn(t.c,w)&&!t.c.isConst(!0)||Nn(t.c,[R,d])&&(!t.c.isConst(!0)||!t.c.den.equ(s.I))||!t.c.isReal()||t.c.gt(s.O))?"+":"")+t.toTerm(e,!0),l=!0;this._tex=u.length?u:"0"}return this._tex},toDec:function(n){for(var t,e="",r=!1,i=J.Arithmetic,u=this.terms,l=this.symbol,s=0,o=u.length;s<o;s++)t=u[s],e+=(r&&(Nn(t.c,w)&&!t.c.isConst(!0)||Nn(t.c,[R,d])&&(!t.c.isConst(!0)||!t.c.den.equ(i.I))||!t.c.isReal()||t.c.gt(i.O))?"+":"")+t.toTerm(l,!1,!1,!0,n),r=!0;return e.length||(e="0",wn(n)&&0<n&&(e+="."+new Array(n+1).join("0"))),e},toExpr:function(){var n,t,e,r,i,u,l=J.Arithmetic.O;if(null==this._expr)if(this.isRecur())this._expr=this.recur(!1).toExpr();else{for(n=this.terms,e=this.symbol,u=[],r=n.length-1;0<=r;r--)i=(t=n[r]).toTerm(e,!1,!0),u.push(C(i.length?i:"1",t.c));u.length||u.push(C(1,l)),this._expr=N(u)}return this._expr}})).cast=function(n,t,e){return e=e||M.Q(),qn(t=t||"x")||(t=[String(t)]),ke(function(n){return Nn(n,w)&&n.ring===e},function(n){return On(n)?w.fromString(n,t,e):new w(n,t,e)})(n)},(R=J.RationalFunc=n(f,{constructor:function n(){var t,e=J.Arithmetic,r=arguments,i=n.autoSimplify,u=4<r.length&&!0===r[4],l=3<r.length&&Nn(r[3],M)?r[3]:null,s=2<r.length?(qn(r[2]),r[2]):null,r=1<r.length?(t=r[0],r[1]):1===r.length?(t=r[0],null):t=null;if(!Nn(this,n))return new n(t,r,s,l,u);if(Nn(t,n)?(u=t._simpl,l=t.ring,s=t.symbol,r=t.den,t=t.num):Nn(t,I)&&(l=l||t.ring,s=s||[t.symbol]),l=Nn(l,M)?l:M.Q(),s=qn(s)?s:[String(s||"x")],null==t?t=w.Zero(s,l):Nn(t,w)||(t=w(t,s,l)),null==r?r=w.One(t.symbol,t.ring):Nn(r,w)||(r=w(r,t.symbol,t.ring)),r.equ(e.O))throw new Error("Zero denominator in Abacus.RationalFunc!");t.equ(e.O)&&!r.equ(e.I)&&(r=w.One(t.symbol,t.ring)),r.lc().lt(e.O)&&(r=r.neg(),t=t.neg()),this.num=t,this.den=r,u?this._simpl=!0:i&&this.simpl()},__static__:{autoSimplify:!0,Zero:function(n,t){return new R(w.Zero(n,t),null,null,null,!0)},One:function(n,t){return new R(w.One(n,t),null,null,null,!0)},MinusOne:function(n,t){return new R(w.MinusOne(n,t),null,null,null,!0)},hasInverse:function(){return!0},cast:null,gcd:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,e=En(function(n,t){return t.den.mul(n)},J.Arithmetic.I,t);return R(Tt(Dn(t.length,function(n){return t[n].num.mul(e.div(t[n].den))})),e)},xgcd:function(){var e,t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;if(t.length)return e=En(function(n,t){return t.den.mul(n)},J.Arithmetic.I,t),Pt(Dn(t.length,function(n){return t[n].num.mul(e.div(t[n].den))})).map(function(n,t){return 0===t?R(n,e):R(n)})},lcm:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,e=En(function(n,t){return t.den.mul(n)},J.Arithmetic.I,t);return R($t(Dn(t.length,function(n){return t[n].num.mul(e.div(t[n].den))})),e)},fromString:function(n,t,e){var r,i,u,l,s,o=0,m=0,c=["",""],a="",f=0,h=/\s/;if(e=e||M.Q(),qn(t=t||"x")||(t=[String(t)]),!(n=H(String(n))).length)return R.Zero(t,e);if("-"===n.charAt(0)||"+"===n.charAt(0)){if(a=n.charAt(0),!(n=H(n.slice(1))).length)return R.Zero(t,e);a="-"===a?"-":""}for(r="\\frac"===n.slice(0,5),i=n.length,f=r?5:0,l=0,u=n.charAt(f),r&&"{"===u&&(m++,f++);f<i;)u=n.charAt(f++),h.test(u)||("/"===u?r||o||m||!(c[l].length&&")"===c[l].charAt(c[l].length-1)||f<i&&"("===n.charAt(f))?c[l]+=u:l=1:"("===u?(o++,c[l]+=u):")"===u?(o--,c[l]+=u,r||o||m||!(i<=f||"/"===n.charAt(f))||(f<i&&"/"===n.charAt(f)&&f++,l=1)):"{"===u?(m++,c[l]+=u):"}"===u?(m--,o||m?c[l]+=u:(r&&f<i&&"{"===n.charAt(f)&&(m++,f++),l=1)):c[l]+=u);return e=o||m?(s=w.fromString(c[0],t,e),null):(c[0].length&&c[1].length&&"("===c[0].charAt(0)&&")"===c[0].charAt(c[0].length-1)&&(c[0]=H(c[0].slice(1,-1))),c[1].length&&"("===c[1].charAt(0)&&")"===c[1].charAt(c[1].length-1)&&(c[1]=H(c[1].slice(1,-1))),s=w.fromString(c[0],t,e),c[1].length?w.fromString(c[1],t,e):null),"-"===a&&(s=s.neg()),new R(s,e)},fromExpr:function(n,t,e){return Nn(n,N)?(e=e||M.Q(),qn(t=t||"x")||(t=[String(t)]),new R(w.fromExpr(n,t,e))):null}},num:null,den:null,_n:null,_i:null,_c:null,_str:null,_tex:null,_simpl:!1,dispose:function(){var n=this;return n._n&&n===n._n._n&&(n._n._n=null),n._i&&n===n._i._i&&(n._i._i=null),n._c&&n===n._c._c&&(n._c._c=null),n.num=null,n.den=null,n._n=null,n._i=null,n._c=null,n._str=null,n._tex=null,n},isInt:function(){return this.num.isInt()&&this.den.equ(J.Arithmetic.I)},isReal:function(){return this.num.isReal()&&this.den.isReal()||this.num.isImag()&&this.den.isImag()},isImag:function(){return this.num.isReal()&&this.den.isImag()||this.num.isImag()&&this.den.isReal()},isConst:function(n){return this.num.isConst(n)&&this.den.isConst(n)},c:function(){return this.num.c().div(this.den.c())},neg:function(){return null==this._n&&(this._n=R(this.num.neg(),this.den,null,null,this._simpl),this._n._n=this),this._n},inv:function(){return null==this._i&&(this._i=R(this.den,this.num,null,null,this._simpl),this._i._i=this),this._i},real:function(){return R(this.num.real(),this.den.real())},imag:function(){return R(this.num.imag(),this.den.imag())},abs:function(){return R(this.num.abs(),this.den,null,null,this._simpl)},conj:function(){return null==this._c&&(this._c=R(this.num.conj(),this.den.conj()),this._c._c=this),this._c},equ:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o])||t.isNumber(n)?this.num.equ(this.den.mul(n)):Nn(n,[p,R])?this.num.mul(n.den).equ(this.den.mul(n.num)):!!On(n)&&(n===this.toString()||n===this.toTex())},gt:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o])||t.isNumber(n)?this.num.gt(this.den.mul(n)):!!Nn(n,[p,R])&&this.num.mul(n.den).gt(this.den.mul(n.num))},gte:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o])||t.isNumber(n)?this.num.gte(this.den.mul(n)):!!Nn(n,[p,R])&&this.num.mul(n.den).gte(this.den.mul(n.num))},lt:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o])||t.isNumber(n)?this.num.lt(this.den.mul(n)):!!Nn(n,[p,R])&&this.num.mul(n.den).lt(this.den.mul(n.num))},lte:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o])||t.isNumber(n)?this.num.lte(this.den.mul(n)):!!Nn(n,[p,R])&&this.num.mul(n.den).lte(this.den.mul(n.num))},add:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||t.isNumber(n))&&(n=p(n)),Nn(n,[v,o])?R(this.num.add(this.den.mul(n)),this.den):Nn(n,[p,R])?R(this.num.mul(n.den).add(this.den.mul(n.num)),this.den.mul(n.den)):this},sub:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||t.isNumber(n))&&(n=p(n)),Nn(n,[v,o])?R(this.num.sub(this.den.mul(n)),this.den):Nn(n,[p,R])?R(this.num.mul(n.den).sub(this.den.mul(n.num)),this.den.mul(n.den)):this},mul:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||t.isNumber(n))&&(n=p(n)),Nn(n,[v,o])?R(this.num.mul(n),this.den):Nn(n,[p,R])?R(this.num.mul(n.num),this.den.mul(n.den)):this},div:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||t.isNumber(n))&&(n=p(n)),Nn(n,[v,o])?R(this.num,this.den.mul(n)):Nn(n,[p,R])?R(this.num.mul(n.den),this.den.mul(n.num)):this},mod:yn,divmod:yn,divides:function(n){return!this.equ(J.Arithmetic.O)},compose:function(n){return R(this.num.compose(n),this.den.compose(n))},pow:function(n){var t=J.Arithmetic,e=this.num,r=this.den;return(n=Z.cast(n)).gt(un)?null:((n=t.val(n.num))<0&&(n=-n,t=e,e=r,r=t),0===n?R.One(e.symbol,e.ring):1===n?R(e,r,e.symbol,e.ring,this._simpl):R(e.pow(n),r.pow(n),e.symbol,e.ring,this._simpl))},rad:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).equ(t.I)?this:ht(this,n)},shift:function(n,t){var e=J.Arithmetic;return n=String(n||this.num.symbol[0]),t=t||0,0===(t=e.val(t))?this:t<0?R(this.num,this.den.shift(n,-t)):R(this.num.shift(n,t),this.den)},d:function(n,t){var e,r,i,u,l=J.Arithmetic;if(n=String(n||this.num.symbol[0]),null==t&&(t=1),(t=l.val(t))<0)return null;if(0===t)return this;for(e=this.num,r=this.den;0<t&&!e.equ(l.O);)e=i=e.d(n,1).mul(r).sub(e.mul(r.d(n,1))),r=u=r.pow(2),t--;return R(i,u)},simpl:function(){var n,t,e,r,i,u=this,l=J.Arithmetic;return u._simpl||(u.num.equ(l.O)?u.den=w.One(u.num.symbol,u.num.ring):u.den.equ(l.I)||(1===u.num.symbol.length&&1===u.den.symbol.length?(i=Tt(u.num,u.den),u.num=u.num.div(i),u.den=u.den.div(i)):(i=u.num.divmod(u.den))&&i[1].equ(l.O)?(u.num=i[0],u.den=w.One(u.num.symbol,u.num.ring)):(i=u.den.divmod(u.num))&&i[1].equ(l.O)&&(u.den=i[0],u.num=w.One(u.num.symbol,u.num.ring)),n=u.num.primitive(!0),i=u.den.primitive(!0),n[1].equ(i[1])?(u.num=n[0],u.den=i[0]):Cn(n[0].ring.NumberClass,v)?n[1].isImag()&&i[1].isImag()?(r=Nt(t=l.mul(i[1].imag().den,n[1].imag().num),e=l.mul(n[1].imag().den,i[1].imag().num)),u.num=n[0].mul(l.div(t,r)),u.den=i[0].mul(l.div(e,r))):n[1].isReal()&&i[1].isReal()?(r=Nt(t=l.mul(i[1].real().den,n[1].real().num),e=l.mul(n[1].real().den,i[1].real().num)),u.num=n[0].mul(l.div(t,r)),u.den=i[0].mul(l.div(e,r))):(r=Et(n[1],i[1]),u.num=n[0].mul(n[1].div(r)),u.den=i[0].mul(i[1].div(r))):(r=Nt(t=l.mul(i[1].den,n[1].num),e=l.mul(n[1].den,i[1].num)),u.num=n[0].mul(l.div(t,r)),u.den=i[0].mul(l.div(e,r)))),u._simpl=!0),u},evaluate:function(n){return this.num.evaluate(n).div(this.den.evaluate(n))},toString:function(){var n=this,t=J.Arithmetic;return null==n._str&&(n._str=n.den.equ(t.I)?n.num.toString():(n.num.isMono()||n.num.isConst(!0)&&(n.num.isReal()||n.num.isImag())?n.num.toString():"("+n.num.toString()+")")+"/"+(n.den.isConst(!0)&&n.den.isReal()?n.den.toString():"("+n.den.toString()+")")),n._str},toTex:function(){var n=J.Arithmetic;return null==this._tex&&(this._tex=this.den.equ(n.I)?this.num.toTex():"\\frac{"+this.num.toTex()+"}{"+this.den.toTex()+"}"),this._tex},toDec:function(n){var t=J.Arithmetic;return this.den.equ(t.I)?this.num.toDec(n):"("+this.num.toDec(n)+")/("+this.den.toDec(n)+")"}})).cast=function(n,t,e){return e=e||M.Q(),qn(t=t||"x")||(t=[String(t)]),ke([R],function(n){return On(n)?R.fromString(n,t,e):new R(w(n,t,e))})(n)},M=J.Ring=n({constructor:function n(t,e,r){var i=this;if(!Nn(i,n))return new n(t,e,r);qn(t)?(i.Modulo=Z.cast(t[1]),t=t[0]):i.Modulo=null,Cn(t,[a,N,d])||(t=v),i.NumberClass=t,Cn(i.NumberClass,[N,d])&&(e=null),qn(e)&&e.length?(e=function(n,t){t=Sn(t)?t:String;for(var e,r=c(),i=[],u=0,l=n.length;u<l;u++)e=t(n[u]),z.call(r,e)?i.push(u):r[e]=u;for(;i.length;)n.splice(i.pop(),1);return n}(e.map(String)),i.CoefficientRing=Cn(i.NumberClass,m)&&i.Modulo?m===i.NumberClass?n.Zp(i.Modulo)():n([i.NumberClass,i.Modulo]):Cn(i.NumberClass,Z)?Z===i.NumberClass?n.Z():n(i.NumberClass):Cn(i.NumberClass,p)?p===i.NumberClass?n.Q():n(i.NumberClass):v===i.NumberClass?n.C():n(i.NumberClass),!0===r?(i.PolynomialClass=R,i.PolynomialSymbol=e):1===e.length?(i.PolynomialClass=I,i.PolynomialSymbol=e[0]):(i.PolynomialClass=w,i.PolynomialSymbol=e)):(!0===r&&(Cn(i.NumberClass,Z)?i.NumberClass=p:Cn(i.NumberClass,N)&&(i.NumberClass=d)),i.PolynomialClass=null,i.CoefficientRing=null,i.PolynomialSymbol=null)},__static__:{ZZ:null,QQ:null,CC:null,EE:null,RR:null,Z:function(){null==M.ZZ&&(M.ZZ=M(Z));var n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments).map(String).filter(function(n){return 0<n.length});return n.length?M(Z,n):M.ZZ},Zn:function(t){return t=Z.cast(t),function(){var n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments).map(String).filter(function(n){return 0<n.length});return n.length?M([m,t],n):M([m,t])}},Q:function(){null==M.QQ&&(M.QQ=M(p));var n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments).map(String).filter(function(n){return 0<n.length});return n.length?M(p,n):M.QQ},C:function(){null==M.CC&&(M.CC=M(v));var n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments).map(String).filter(function(n){return 0<n.length});return n.length?M(v,n):M.CC},E:function(){return null==M.EE&&(M.EE=M(N)),M.EE},R:function(){return null==M.RR&&(M.RR=M(d)),M.RR}},NumberClass:null,Modulo:null,PolynomialClass:null,CoefficientRing:null,PolynomialSymbol:null,_str:null,_tex:null,dispose:function(){return this.NumberClass=null,this.Modulo=null,this.PolynomialClass=null,this.CoefficientRing=null,this.PolynomialSymbol=null,this._str=null,this._tex=null,this},Zero:function(){return this.PolynomialClass?this.PolynomialClass.Zero(this.PolynomialSymbol,this.CoefficientRing):Cn(this.NumberClass,[N,d])?new this.NumberClass:this.NumberClass.Zero(this.Modulo)},One:function(){return this.PolynomialClass?this.PolynomialClass.One(this.PolynomialSymbol,this.CoefficientRing):Cn(this.NumberClass,[N,d])?new this.NumberClass(1):this.NumberClass.One(this.Modulo)},MinusOne:function(){return this.PolynomialClass?this.PolynomialClass.MinusOne(this.PolynomialSymbol,this.CoefficientRing):Cn(this.NumberClass,[N,d])?new this.NumberClass(-1):this.NumberClass.MinusOne(this.Modulo)},isSymbolic:function(){return Cn(this.NumberClass,[N,d])||null!=this.PolynomialClass&&Cn(this.PolynomialClass,[I,w,R])},isReal:function(){return!Cn(this.NumberClass,v)},isField:function(){return this.PolynomialClass?this.PolynomialClass.hasInverse():!!Cn(this.NumberClass,d)||!Cn(this.NumberClass,N)&&(this.NumberClass.hasInverse()&&(!this.Modulo||this.Modulo.isPrime()))},associatedField:function(){var n=this;return n.PolynomialClass?Cn(n.PolynomialClass,R)?n:M(n.Modulo?[n.NumberClass,n.Modulo]:n.NumberClass,[].concat(n.PolynomialSymbol),!0):Cn(n.NumberClass,N)?M.R():Cn(n.NumberClass,Z)?M.Q():n.isField()?n:null},hasGCD:function(){return this.PolynomialClass?(Cn(this.PolynomialClass,I)||1===this.PolynomialSymbol.length)&&Sn(this.PolynomialClass.gcd)&&Sn(this.PolynomialClass.xgcd):Sn(this.NumberClass.gcd)&&Sn(this.NumberClass.xgcd)&&(!this.Modulo||this.Modulo.isPrime())},gcd:function(){if(!this.hasGCD())throw new Error("Abacus.Ring instance does not support GCD!");return(this.PolynomialClass?this.PolynomialClass:this.NumberClass).gcd.apply(null,arguments)},xgcd:function(){if(!this.hasGCD())throw new Error("Abacus.Ring instance does not support xGCD!");return(this.PolynomialClass?this.PolynomialClass:this.NumberClass).xgcd.apply(null,arguments)},lcm:function(){if(!this.hasGCD())throw new Error("Abacus.Ring instance does not support LCM!");return(this.PolynomialClass?this.PolynomialClass:this.NumberClass).lcm.apply(null,arguments)},cast:function(n){return this.PolynomialClass?this.PolynomialClass.cast(n,this.PolynomialSymbol,this.CoefficientRing):this.Modulo?this.NumberClass.cast(n,this.Modulo):this.NumberClass.cast(n)},create:function(){var n=this,t=arguments;return t.length?Cn(n.PolynomialClass,R)?((t=G.call(t,0,2)).length<2&&t.push(null),n.PolynomialClass.apply(null,t.concat([n.PolynomialSymbol,n.CoefficientRing]))):n.PolynomialClass?n.PolynomialClass.apply(null,[t[0],n.PolynomialSymbol,n.CoefficientRing]):n.NumberClass.apply(null,n.Modulo?[t[0],n.Modulo]:t):n.Zero()},fromString:function(n){return(n=H(String(n))).length?this.PolynomialClass?this.PolynomialClass.fromString(n,this.PolynomialSymbol,this.CoefficientRing):Cn(this.NumberClass,[N,d])?this.NumberClass.fromString(n):this.NumberClass.fromString(n,this.Modulo):this.Zero()},fromExpr:function(n){return Nn(n,N)?this.PolynomialClass?this.PolynomialClass.fromExpr(n,this.PolynomialSymbol,this.CoefficientRing):this.cast(n.c()):null},fromValues:function(n){return Cn(this.PolynomialClass,I)?this.PolynomialClass.fromValues(n,this.PolynomialSymbol,this.CoefficientRing):null},toString:function(){var n=this;return null==n._str&&(n._str=(Cn(n.NumberClass,m)?"Zn("+n.Modulo.toString()+")(":Cn(n.NumberClass,Z)?"Z(":Cn(n.NumberClass,p)?"Q(":"C(")+(n.PolynomialSymbol?'"'+[].concat(n.PolynomialSymbol).join('","')+'"':"")+")",Cn(n.PolynomialClass,R)&&(n._str+=".associatedField()")),n._str},toTex:function(){var n=this;return null==n._tex&&(n._tex="\\mathbb"+(Cn(n.NumberClass,m)?"{Z}_{"+n.Modulo.toTex()+"}":Cn(n.NumberClass,Z)?"{Z}":Cn(n.NumberClass,p)?"{Q}":"{C}")+(n.PolynomialSymbol?"["+[].concat(n.PolynomialSymbol).map(Zn).join(",")+"]":""),Cn(n.PolynomialClass,R)&&(n._tex="\\mathbf{Fr}["+n._tex+"]")),n._tex}}),E=J.Matrix=n(_,{constructor:function n(t,e,r,i){var u,l,s,o,m=this;if(!Nn(m,n))return new n(t,e,r,i);if(Nn(t,M)||(t=M.Z()),m.ring=t,Nn(e,n))m.val=e.val.map(function(n){return n.slice()}),m.ring!==e.ring&&(m.val=m.ring.cast(m.val));else if(qn(e)||An(e))qn(e[0])||An(e[0])?(An(e)&&(e=G.call(e)),An(e[0])&&(e=e.map(function(n){return G.call(n)})),m.val=m.ring.cast(e)):m.val=r?Dn(1,function(n){return Dn(e.length,function(n){return m.ring.cast(e[n])})}):Dn(e.length,function(t){return Dn(1,function(n){return m.ring.cast(e[t])})});else if(null==r&&(r=e),(e=0|+(e||0))<0&&(e=0),(r=0|+(r||0))<0&&(r=0),m.val=Dn(e,function(n){return Dn(r,function(n){return m.ring.Zero()})}),In(i))for(u in i)z.call(i,u)&&-1!==u.indexOf(",")&&(l=i[u],s=(u=u.split(",").map(function(n){return parseInt(H(n),10)}))[0],o=u[1],0<=s&&s<m.val.length&&0<=o&&o<m.val[0].length&&(m.val[s][o]=m.ring.cast(l)));m.nr=m.val.length,m.nc=m.nr?m.val[0].length:0},__static__:{hasInverse:function(){return!1},isCommutative:function(){return!1},Zero:function(n,t,e){return n=n||M.Z(),E.C(n,t,e,n.Zero())},One:function(n,t){return n=n||M.Z(),E.D(n,t,t,n.One())},I:function(n,t){return E.One(n,t)},C:function(n,t,e,r){return n=n||M.Z(),r=r||n.Zero(),null==e&&(e=t),e=+e,(t=+t)<0||e<0?null:new E(n,Dn(t,function(n){return Dn(e,function(n){return r})}))},D:function(n,t,e,r){var i=(n=n||M.Z()).Zero();return r=n.cast(r||i),null==e&&(e=t),e=+e,(t=+t)<0||e<0?null:new E(n,Dn(t,function(t){return Dn(e,function(n){return t===n?qn(r)||An(r)?t<r.length?r[t]:i:r:i})}))},T:function(e){var n=e.length;return Dn(n?e[0].length:0,function(t){return Dn(n,function(n){return e[n][t]})})},ARR:function(e,r,n,i){return e=e||M.Z(),E(e,Dn(n,function(t){return Dn(i,function(n){n=t*i+n;return n<r.length?e.cast(r[n]):e.Zero()})}))},SWAPR:function(n,t,e){var r;return t!==e&&(r=n[t],n[t]=n[e],n[e]=r),n},SWAPC:function(n,t,e){if(t!==e)for(var r,i=n.length,u=0;u<i;u++)r=n[u][t],n[u][t]=n[u][e],n[u][e]=r;return n},ADDR:function(n,t,e,r,i,u,l){n=n||M.Z();var s,o=t[0].length;for(null==i&&(i=n.One()),null==u&&(u=n.One()),s=l||0;s<o;s++)t[e][s]=n.cast(u.mul(t[e][s]).add(i.mul(t[r][s])));return t},ADDC:function(n,t,e,r,i,u,l){n=n||M.Z();var s,o=t.length;for(null==i&&(i=n.One()),null==u&&(u=n.One()),s=l||0;s<o;s++)t[s][e]=n.cast(u.mul(t[s][e]).add(i.mul(t[s][r])));return t},MULR:function(n,t,e,r,i,u,l,s){n=n||M.Z();for(var o,m,c=t[0].length,a=0;a<c;a++)o=t[e][a],m=t[r][a],t[e][a]=n.cast(i.mul(o).add(u.mul(m))),t[r][a]=n.cast(l.mul(o).add(s.mul(m)));return t},MULC:function(n,t,e,r,i,u,l,s){n=n||M.Z();for(var o,m,c=t.length,a=0;a<c;a++)o=t[a][e],m=t[a][r],t[a][e]=n.cast(i.mul(o).add(l.mul(m))),t[a][r]=n.cast(u.mul(o).add(s.mul(m)));return t},toString:function(n,e){if(!qn(n))return String(n);e=String(e||"|");var r=qn(n[0])?Dn(n[0].length,0):0;return(n=n.map(function(n,t){if(qn(n))return n.map(function(n,t){n=String(n);return qn(r)?n.length>r[t]&&(r[t]=n.length):n.length>r&&(r=n.length),n});n=String(n);return qn(r)?n.length>r[0]&&(r[0]=n.length):n.length>r&&(r=n.length),n})).map(function(n,t){return e+(qn(n)?n.map(function(n,t){return Yn(n,qn(r)?r[t]:r)}).join(" "):Yn(n,qn(r)?r[0]:r))+e}).join("\n")},toTex:function(n,t){return qn(n)?"\\begin{"+(t="pmatrix"===t?"pmatrix":"bmatrix")+"}"+n.map(function(n){return qn(n)?n.map(Mn).join(" & "):Mn(n)}).join(" \\\\ ")+"\\end{"+t+"}":Mn(n)},toDec:function(n,e,r){if(!qn(n))return Sn(n.toDec)?n.toDec(e):String(n);r=String(r||"|");var i=qn(n[0])?Dn(n[0].length,0):0;return(n=n.map(function(n,t){if(qn(n))return n.map(function(n,t){n=n.toDec(e);return qn(i)?n.length>i[t]&&(i[t]=n.length):n.length>i&&(i=n.length),n});n=n.toDec(e);return qn(i)?n.length>i[0]&&(i[0]=n.length):n.length>i&&(i=n.length),n})).map(function(n,t){return r+(qn(n)?n.map(function(n,t){return Yn(n,qn(i)?i[t]:i)}).join(" "):Yn(n,qn(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 Dn(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<this.nr?this.val[n].slice():null},col:function(t){var e=this;return 0<=t&&t<e.nc?Dn(e.nr,function(n){return e.val[n][t]}):null},diag:function(n){var t,e,r=this;return 0<=(e=(t=0<(n=n||0)?0:-n)?0:n)&&e<r.nc&&0<=t&&t<r.nr?Dn(Q.min(r.nr-t,r.nc-e),function(n){return r.val[t+n][e+n]}):null},entry:function(n,t,e){var r=this,i=r.nr,u=r.nc;return n<0&&(n+=i),t<0&&(t+=u),0<=n&&n<i&&0<=t&&t<u?null!=e?(e=r.ring.cast(e),r.val[n][t].equ(e)||(r._n&&r===r._n._n&&(r._n._n=null),r._t&&r===r._t._t&&(r._t._t=null),r._h&&r===r._h._h&&(r._h._h=null),r._i&&r===r._i._i&&(r._i._i=null),r._gi&&r===r._gi._gi&&(r._gi._gi=null),r._str=null,r._tex=null,r._n=null,r._t=null,r._h=null,r._a=null,r._i=null,r._gi=null,r._p=null,r._snf=null,r._lu=null,r._qr=null,r._ldl=null,r._ref=null,r._rref=null,r._rf=null,r._evd=null,r._svd=null,r._rn=null,r._ln=null,r._rs=null,r._cs=null,r._tr=null,r._det=null,r.val[n][t]=e),r):r.val[n][t]:null==e?null:r},isSquare:function(){return this.nr===this.nc},isScalar:function(){return 1===this.nr&&1===this.nc},isInt:function(){var n,t,e=this.nr,r=this.nc;if(Cn(this.ring.NumberClass,Z))return!0;for(n=0;n<e;n++)for(t=0;t<r;t++)if(!this.val[n][t].isInt())return!1;return!0},isReal:function(){var n,t,e=this.nr,r=this.nc;if(!Cn(this.ring.NumberClass,v))return!0;for(n=0;n<e;n++)for(t=0;t<r;t++)if(!this.val[n][t].isReal())return!1;return!0},isImag:function(){var n,t,e=this.nr,r=this.nc;if(!Cn(this.ring.NumberClass,v))return!1;for(n=0;n<e;n++)for(t=0;t<r;t++)if(!this.val[n][t].isImag())return!1;return!0},equ:function(n,t){var e,r,i=this.nr,u=this.nc;if(Nn(n,E)){if(i!==n.nr||u!==n.nc)return!1;for(e=0;e<i;e++)for(r=0;r<u;r++)if(!this.val[e][r].equ(n.val[e][r]))return!1;return!0}if(!0!==t)return 1===i&&1===u&&this.val[0][0].equ(n);for(e=0;e<i;e++)for(r=0;r<u;r++)if(!this.val[e][r].equ(n))return!1;return!0},gt:function(n){return 1===this.nr&&1===this.nc&&this.val[0][0].gt(n)},gte:function(n){return 1===this.nr&&1===this.nc&&this.val[0][0].gte(n)},lt:function(n){return 1===this.nr&&1===this.nc&&this.val[0][0].lt(n)},lte:function(n){return 1===this.nr&&1===this.nc&&this.val[0][0].lte(n)},real:function(){return Cn(this.ring.NumberClass,v)?this.map(function(n){return n.real()}):this},imag:function(){var n=this.ring;return Cn(n.NumberClass,v)?this.map(function(n){return n.imag()}):E.Zero(n,this.nr,this.nc)},neg:function(){return null==this._n&&(this._n=this.map(function(n){return n.neg()}),this._n._n=this),this._n},t:function(){var n=this;return null==n._t&&(n._t=E(n.ring,E.T(n.val)),(n._t._t=n)._t._tr=n._tr,n._t._det=n._det),n._t},h:function(){var n,e,t,r=this;return r.ring.NumberClass!==v?r.t():(null==r._h&&(n=r.ring,e=r.nr,t=r.nc,r._h=E(n,Dn(t,function(t){return Dn(e,function(n){return r.val[n][t].conj()})})),r._h._h=r),r._h)},inv:function(){var n,t,e,r,i,u=this;return null==u._i&&((n=u.nr)!==(t=u.nc)?u._i=!1:(e=u.ring,(i=u.rref(!0))[0].val[n-1][t-1].equ(e.Zero())?u._i=!1:(r=e.associatedField(),u._i=E(r,i[3].map(function(n,t){return r.cast(n).div(r.cast(i[0].val[t[0]][t[0]]))},!0)),u._i._i=e.isField()?u:E(r,u)))),u._i},ginv:function(){var n,e,t,r,i,u,l=this;return null==l._gi&&(u=l.nr,t=l.nc,n=l.ring,e=n.associatedField(),l.equ(n.Zero(),!0)?l._gi=l.t():1===u&&1===t?l._gi=E(e,[[e.cast(l.val[0][0]).inv()]]):1===u||1===t?(i=e.cast(l.array().reduce(function(n,t){return n.add(t.mul(t.conj()))},n.Zero())),l._gi=E(e,l.h().map(function(n,t){return e.cast(n).div(i)},!0))):(r=l.rank())===t?l._gi=u===t?l.inv():l.h().mul(l).inv().mul(l.h()):r===u?l._gi=l.h().mul(l.mul(l.h()).inv()):(u=l.rankf(),i=u[0],u=u[1],l._gi=u.h().mul(u.mul(u.h()).inv()).mul(i.h().mul(i).inv().mul(i.h()))),l._gi._gi=n.isField()?l:E(e,l)),l._gi},minor:function(n,e,t){var r=this,i=r.nr,u=r.nc,l=r.ring;return i!==u?null:i<=1?l.Zero():(e=+(e||0),(n=+(n||0))<0||i<=n||e<0||u<=e?null:(i=E(l,Dn(i-1,function(t){return n<=t&&t++,Dn(u-1,function(n){return e<=n&&n++,r.val[t][n]})})).det(),!0===t&&n+e&1&&(i=i.neg()),i))},adj:function(){var n,t,e,r=this;return null==r._a&&(n=r.nr,t=r.nc,n!==t?r._a=!1:(e=r.ring,r._a=E(e,Dn(t,function(t){return Dn(n,function(n){return r.minor(n,t,!0)})})))),r._a},charpoly:function(n){var t,e,r,i,u,l=this.nr;if(l!==this.nc)return null;if(null==this._p){for(n=String(n||"x"),t=this.ring,r=l,u=new Array(r+1),i=E(t,r,r),u[r]=t.One(),e=1;e<=r;e++)i=this.mul(i).map(function(n,t){return t[0]===t[1]?n.add(u[r-e+1]):n}),u[r-e]=this.mul(i).tr().div(-e);this._p=t.PolynomialClass?I(u.map(function(n){return R(n)}),n,t.CoefficientRing):I(u,n,t)}return this._p},add:function(e){var r=this;return Nn(e,E)?E(r.ring,Dn(Q.max(r.nr,e.nr),function(t){return t>=e.nr?r.val[t].slice():t>=r.nr?e.val[t].slice():Dn(Q.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])})})):((wn(e)||On(e))&&(e=r.ring.cast(e)),r.map(function(n){return n.add(e)}))},sub:function(e){var r=this;return Nn(e,E)?E(r.ring,Dn(Q.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)}):Dn(Q.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])})})):((wn(e)||On(e))&&(e=r.ring.cast(e)),r.map(function(n){return n.sub(e)}))},mul:function(i){var u,l,s=this;return Nn(i,E)?(u=Q.min(s.nc,i.nr),l=s.ring.Zero(),E(s.ring,Dn(s.nr,function(r){return Dn(i.nc,function(n){for(var t=l,e=0;e<u;e++)t=t.add(s.val[r][e].mul(i.val[e][n]));return t})}))):((wn(i)||On(i))&&(i=s.ring.cast(i)),s.map(function(n){return n.mul(i)}))},dot:function(e){var r=this;return Nn(e,E)?E(r.ring,Dn(Q.max(r.nr,e.nr),function(t){return t>=r.nr?e.val[t].slice():t>=e.nr?r.val[t].slice():Dn(Q.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])})})):((wn(e)||On(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 Nn(i,E)?(e=s.nr,n=s.nc,t=i.nr,u=i.nc,e=e*t,l=n*u,E(s.ring,Dn(e,function(n){var e=~~(n/t),r=n%t;return Dn(l,function(n){var t=~~(n/u),n=n%u;return s.val[e][t].mul(i.val[r][n])})}))):((wn(i)||On(i))&&(i=s.ring.cast(i)),s.map(function(n){return n.mul(i)}))},div:function(t){return Nn(t,a)||J.Arithmetic.isNumber(t)||On(t)?((wn(t)||On(t))&&(t=this.ring.cast(t)),this.map(function(n){return n.div(t)})):this},mod:function(t){return Nn(t,a)||J.Arithmetic.isNumber(t)||On(t)?((wn(t)||On(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=J.Arithmetic;if((n=Z.cast(n)).lt(r.O)||n.gt(un))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(),a=this.val;for(Nn(n,E)&&(n=n.col(0)),Nn(t,E)&&(t=t.diag()),n=m.cast(n),t=t&&m.cast(t),u=Q.min(this.nr,this.nc,n.length),l=new Array(u),e=0;e<u;e++){for(i=c,r=0;r<e;r++)i=i.add(a[e][r].mul(l[r]));if(s=n[e].sub(i),(o=a[e][e]).equ(c)){if(!s.equ(c))return null}else if(t)s=s.mul(t[e].div(o));else{if(!o.divides(s))return null;s=s.div(o)}l[e]=s}return l},backsub:function(n,t){var e,r,i,u,l,s,o,m=this.ring,c=m.Zero(),a=this.val;for(Nn(n,E)&&(n=n.col(0)),Nn(t,E)&&(t=t.diag()),n=m.cast(n),t=t&&m.cast(t),u=Q.min(this.nr,this.nc,n.length),l=new Array(u),e=u-1;0<=e;e--){for(i=c,r=u-1;e<r;r--)i=i.add(a[e][r].mul(l[r]));if(s=n[e].sub(i),(o=a[e][e]).equ(c)){if(!s.equ(c))return null}else if(t)s=s.mul(t[e].div(o));else{if(!o.divides(s))return null;s=s.div(o)}l[e]=s}return l},backsuby:function(n){var t,e,r,i,u,l,s,o=this.ring,m=o.Zero(),c=this.val;for(Nn(n,E)&&(n=n.col(0)),n=o.cast(n),i=Q.min(this.nr,this.nc,n.length),u=new Array(i),t=i-1;0<=t;t--){for(r=m,e=i-1;t<e;e--)r=r.add(c[t][e].mul(u[e]));if(l=c[i-1][i-1].mul(n[t]).sub(r),!(s=c[t][t]).divides(l))return null;l=l.div(s),u[t]=l}return u},snf:function(){var n,t,e,r,i,u,l,s,o,m,c,a,f,h,d,g,_,v,b,p,y,x,q,A,I,O,w,S=this;if(null==S._snf)if((n=S.ring).hasGCD()){for(t=n.Zero(),e=n.One(),r=n.MinusOne(),i=S.nr,u=S.nc,l=Q.min(i,u),s=S.clone(),o=E.I(n,i),m=E.I(n,u),c=-1,a=0;a<i;a++){for(_=!1,f=c+1;f<u;f++){for(b=0;b<i&&s.val[b][f].equ(t);b++);if(b<i){_=!0;break}}if(!_)break;if(s.val[a][f].equ(t)){for(d=0;d<i&&s.val[d][f].equ(t);d++);E.MULR(n,s.val,a,d,t,e,e,t),E.MULC(n,o.val,a,d,t,e,e,t)}for(E.MULC(n,s.val,f,a,t,e,e,t),E.MULR(n,m.val,f,a,t,e,e,t),f=a,h=!0;h;){for(h=!1,d=a+1;d<i;d++)s.val[d][f].equ(t)||(h=!0,s.val[a][f].divides(s.val[d][f])||(y=(p=n.xgcd(s.val[a][f],s.val[d][f]))[1],x=p[2],q=s.val[d][f].div(p[0]),A=s.val[a][f].div(p[0]),E.MULR(n,s.val,a,d,y,x,q.neg(),A),E.MULC(n,o.val,a,d,A,x.neg(),q,y)),I=s.val[d][f].div(s.val[a][f]),E.MULR(n,s.val,a,d,e,t,I.neg(),e),E.MULC(n,o.val,a,d,e,t,I,e));for(g=f+1;g<u;g++)s.val[a][g].equ(t)||(h=!0,s.val[a][f].divides(s.val[a][g])||(y=(p=n.xgcd(s.val[a][f],s.val[a][g]))[1],x=p[2],q=s.val[a][g].div(p[0]),A=s.val[a][f].div(p[0]),E.MULC(n,s.val,f,g,y,q.neg(),x,A),E.MULR(n,m.val,f,g,A,q,x.neg(),y)),I=s.val[a][g].div(s.val[a][f]),E.MULC(n,s.val,f,g,e,I.neg(),t,e),E.MULR(n,m.val,f,g,e,I,t,e))}c=f}for(v=0;v<l;v++)for(b=v-1;0<=b;b--)(p=n.xgcd(s.val[b][b],s.val[v][v]))[0].equ(t)||(y=p[1],x=p[2],q=s.val[v][v].div(p[0]),A=s.val[b][b].div(p[0]),O=x.mul(q),w=e.sub(y.mul(A)),E.MULR(n,s.val,b,v,e,x,q,O.sub(e)),E.MULC(n,o.val,b,v,e.sub(O),x,q,r),E.MULC(n,s.val,b,v,y,w,e,A.neg()),E.MULR(n,m.val,b,v,A,w,e,y.neg()));S._snf=[s,o,m]}else S._snf=!1;return S._snf?S._snf.slice():S._snf},evd:function(){this.ring,this.nr,this.nc;return null},svd:function(){this.ring,this.nr,this.nc;return null},lu:function(){var n,t,e,r,i,u,l,s,o,m,c,a,f,h,d,g,_,v,b=this;if(null==b._lu){for(n=b.ring,t=n.Zero(),e=n.One(),n.MinusOne(),r=b.nr,i=b.nc,v=!1,s=b.clone(),l=E.I(n,r),o=Dn(r,function(){return t}),u=E.I(n,r),m=e,c=0;c<r-1;c++){if(s.val[c][c].equ(t)){for(h=c+1,d=!0;h<r&&d;)s.val[h][c].equ(t)?h++:d=!1;if(r<=h){v=!0;break}E.SWAPR(s.val,c,h),E.SWAPR(u.val,c,h)}for(g=s.val[c][c],l.val[c][c]=g,o[c]=m.mul(g),a=c+1;a<r;a++){for(_=s.val[a][c],l.val[a][c]=_,f=c+1;f<i;f++)s.val[a][f]=g.mul(s.val[a][f]).sub(s.val[c][f].mul(_)).div(m);s.val[a][c]=t}m=s.val[c][c]}v?b._lu=!1:(o[r-1]=m,b._lu=[u,l,E.D(n,r,r,o),s])}return b._lu?b._lu.slice():b._lu},qr:function(){var n,t,e=this;return null==e._qr&&(e.nr,n=e.nc,t=e.t().mul(e).concat(e.t()).lu(),e._qr=!!t&&[t[3].slice(0,n,-1,-1).t(),t[2],t[1].t()]),e._qr?e._qr.slice():e._qr},ldl:function(){var n,t,e,r,i,u,l,s,o,m,c=this;if(null==c._ldl)if((n=c.nr)===c.nc&&c.equ(c.h())){for(e=(t=c.ring).associatedField(),s=t.isField()?c:E(e,c),o=E.Zero(e,n,n),m=E.I(e,n),r=0;r<n;r++){for(i=0;i<r;i++){for(u=0,l=e.Zero();u<i;u++)l=l.add(m.val[r][u].mul(m.val[i][u].conj()).mul(o.val[u][u]));m.val[r][i]=s.val[r][i].sub(l).div(o.val[i][i])}for(u=0,l=e.Zero();u<r;u++)l=l.add(m.val[r][u].mul(m.val[r][u].conj()).mul(o.val[u][u]));if(o.val[r][r]=s.val[r][r].sub(l),o.val[r][r].lte(0)){c._ldl=!1;break}}!1!==c._ldl&&(c._ldl=[m,o])}else c._ldl=!1;return c._ldl?c._ldl.slice():c._ldl},ref:function(n,t){var e,r,i,u,l,s,o,m,c,a,f,h,d,g,_,v,b,p,y,x,q,A=0;if(null==this._ref){for(r=(e=this.ring).Zero(),i=e.One(),u=e.MinusOne(),l=this.nr,o=s=this.nc,qn(t)&&(o=Q.min(o,t[1])),x=this.concat(E.I(e,l)).val,m=new Array(o),c=i,q=function(n,t){t=t||0;for(var e=A-1;0<=e;e--)if(n===m[e][t])return e;return-1},a=g=0;a<l&&!(o<=g);a++){for(f=a;x[f][g].equ(r);)if(l<=++f&&(f=a,o<=++g)){g=-1;break}if(-1===g)break;for(_=-1,b=null,y=0,f=h=f;f<l;f++)(p=x[f][g].abs()).equ(r)?y++:null!=b&&!p.lt(b)||(b=p,_=f);for(;;){if(-1===_)break;if(l-h===y+1){for(a!==_&&(E.SWAPR(x,a,_),c=c.neg()),x[a][g].lt(r)&&(E.ADDR(e,x,a,a,r,u,g),c=c.mul(u)),f=_,h=a;0<=f&&-1!==(d=q(f));)f=h-=A-d;m[A++]=[f,g],c=a<o?c.mul(x[a][a]):r;break}for(y=0,v=_,f=h;f<l;f++)f!==v&&(E.ADDR(e,x,f,v,x[f][g].div(x[v][g]).neg(),i,g),(p=x[f][g].abs()).equ(r)?y++:p.lt(b)&&(b=p,_=f))}g++}A<o&&(c=r),t=(x=new E(e,x)).slice(0,s,l-1,l+s-1),x=x.slice(0,0,l-1,s-1),m.length>A&&(m.length=A),this._ref=[x,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,a,f,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,qn(t)&&(v=Q.min(v,t[1])),g=(v=this.ref(!0,t))[0].concat(v[3]),o=v[1],t=v[2],m=o.length,a=0;a<m;a++)for(c=o[a][1],f=0;f<a;f++)if(!g.val[f][c].equ(r)&&(E.ADDR(e,g.val,f,a,g.val[f][c].neg(),g.val[a][c]),g.val[f][o[f][1]].lt(r)&&E.ADDR(e,g.val,f,f,r,u,o[f][1]),e.hasGCD()&&!r.equ(_=e.gcd(g.val[f]))&&!i.equ(_)))for(h=0,d=g.val[f].length;h<d;h++)g.val[f][h]=g.val[f][h].div(_);v=g.slice(0,s,l-1,l+s-1),g=g.slice(0,0,l-1,s-1),this._rref=[g,o,t,v]}return n?this._rref.slice():this._rref[0]},rankf:function(){var n,i,u,l,t,e,r;return null==this._rf&&(r=this.nr,u=this.nc,n=this.ring,l=this.rref(!0),e=(t=l[1]).length,i=n.associatedField(),r=E(i,this.slice(Dn(r,0,1),Dn(e,function(n){return t[n][1]}))),e=E(i,l[0].slice(0,0,e-1,u-1).map(function(n,t){for(var e=t[0],r=e;r+1<u&&l[0].val[e][r].equ(0);)r++;return i.cast(n).div(i.cast(l[0].val[e][r]))})),this._rf=[r,e]),this._rf.slice()},rank:function(){return this.ref(!0)[1].length},tr:function(){var n,t,e;if(null==this._tr)for(n=this.ring,t=Q.min(this.nr,this.nc),this._tr=n.Zero(),e=0;e<t;e++)this._tr=this._tr.add(this.val[e][e]);return this._tr},det:function(){var n;return null==this._det&&(n=this.ring,this.nr!==this.nc?this._det=n.Zero():(n=this.ref(!0),this._det=n[2])),this._det},rowspace:function(){var t,n,e=this;return null==e._rs&&(t=e.ring,n=e.ref(!0),e._rs=n[1].map(function(n){return E(t,[e.row(n[0])])})),e._rs.slice()},colspace:function(){var t,n,e=this;return null==e._cs&&(t=e.ring,n=e.ref(!0),e._cs=n[1].map(function(n){return E(t,e.col(n[1]))})),e._cs.slice()},nullspace:function(n){var u,l,s,o,m,c,a,f,t=this;return n?(null==t._ln&&(t._ln=t.t().nullspace().map(function(n){return n.t()})),t._ln.slice()):(null==t._rn&&(u=t.ring,l=u.Zero(),s=u.One(),o=t.nc,n=t.rref(!0),m=n[0],c=n[1],a=c.length,n=_e(o,c.map(function(n){return n[1]})),f=a?u.hasGCD()?u.lcm(c.map(function(n,t){return m.val[t][n[1]]})):En(function(n,t,e){return n.mul(m.val[e][t[1]])},s,c):s,t._rn=n.map(function(t){for(var n,e,r=Dn(o,function(n){return n===t?f:l}),i=0;i<a;i++)(e=c[i][1])<=t&&(r[e]=r[e].sub(f.div(m.val[i][e]).mul(m.val[i][t])));if(u.hasGCD()&&s.lt(n=u.gcd(r)))for(e=0;e<o;e++)r[e]=r[e].div(n);return E(u,r)})),t._rn.slice())},slice:function(e,r,n,i){var u=this,t=u.ring,l=u.nr,s=u.nc;return l&&s?qn(e)&&qn(r)?(e=e.filter(function(n){return 0<=n&&n<l}),r=r.filter(function(n){return 0<=n&&n<s}),E(t,Dn(e.length,function(t){return Dn(r.length,function(n){return u.val[e[t]][r[n]]})}))):(null==e&&(e=0),null==r&&(r=0),null==n&&(n=l-1),null==i&&(i=s-1),e<0&&(e+=l),r<0&&(r+=s),n<0&&(n+=l),i<0&&(i+=s),e=Q.max(0,Q.min(l-1,e)),n=Q.max(0,Q.min(l-1,n)),r=Q.max(0,Q.min(s-1,r)),i=Q.max(0,Q.min(s-1,i)),e<=n&&r<=i?E(t,Dn(n-e+1,function(t){return Dn(i-r+1,function(n){return u.val[e+t][r+n]})})):E(t)):E(t)},concat:function(e,n){var r=this,t=r.ring,i=t.Zero();return Nn(e,E)?E(t,"vertical"===(n=n||"horizontal")?Dn(r.nr+e.nr,function(t){return Dn(Q.max(r.nc,e.nc),function(n){return n>=r.nc?t<r.nr?i:e.val[t-r.nr][n]:n>=e.nc?t<r.nr?r.val[t][n]:i:(t<r.nr?r.val[t]:e.val[t-r.nr])[n]})}):Dn(Q.max(r.nr,e.nr),function(t){return Dn(r.nc+e.nc,function(n){return t>=r.nr?n<r.nc?i:e.val[t][n-r.nc]:t>=e.nr?n<r.nc?r.val[t][n]:i:n<r.nc?r.val[t][n]:e.val[t][n-r.nc]})})):r},valueOf:function(n,t){var e=this.ring;return t=+(t||0),(0<=(n=+(n||0))&&n<this.nr&&0<=t&&t<this.nc?this.val[n][t]:e.Zero()).valueOf()},toString:function(){return null==this._str&&(this._str=E.toString(this.val)),this._str},toTex:function(){return null==this._tex&&(this._tex=E.toTex(this.val)),this._tex},toDec:function(n){return E.toDec(this.val,n)}}),$e.LEX=$e.LEXICOGRAPHIC=dn,$e.COLEX=$e.COLEXICOGRAPHIC=gn,$e.MINIMAL=$e.GRAY=_n,$e.RANDOM=vn,$e.REV=$e.ANTI=$e.REVERSE=$e.REVERSED=fn,$e.REF=$e.REFLECT=$e.REFLECTED=hn,$e.REVLEX=$e.ANTILEX=$e.REVERSELEXICOGRAPHIC=$e.ANTILEXICOGRAPHIC=dn|fn,$e.REFLEX=$e.REFLECTEDLEXICOGRAPHIC=dn|hn,$e.REVCOLEX=$e.ANTICOLEX=$e.REVERSECOLEXICOGRAPHIC=$e.ANTICOLEXICOGRAPHIC=gn|fn,$e.REFCOLEX=$e.REFLECTEDCOLEXICOGRAPHIC=gn|hn,J.ORDER=$e,u=J.Filter=n({constructor:function n(t){if(!Nn(this,n))return new n(t);this.filter=t||null},__static__:{UNIQUE:function(){return u(function(n){for(var t=n.length,e={},r=0;r<t;r++){if(1===e[n[r]])return!1;e[n[r]]=1}return!0})},SORTED:function(n,i){return(arguments.length<2||null==i)&&(i=!0),On(n)&&("<"===n?(n=1,i=!0):">"===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<r;e++){if(i&&t<=n[e]||!i&&t<n[e])return!1;t=n[e]}return!0}:function(n){for(var t=n[0],e=1,r=n.length;e<r;e++){if(i&&t>=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<t}:"<="===n?function(n){return n.length<=t}:"!="===n?function(n){return n.length!==t}:function(n){return n.length===t})},VAL:function(t,e,n){return t=+t,u(">="===(n=n||"==")||"=>"===n?function(n){return 0<=t&&t<n.length&&n[t]>=e}:">"===n?function(n){return 0<=t&&t<n.length&&n[t]>e}:"<"===n?function(n){return 0<=t&&t<n.length&&n[t]<e}:"<="===n||"=<"===n?function(n){return 0<=t&&t<n.length&&n[t]<=e}:"!="===n?function(n){return 0<=t&&t<n.length&&n[t]!==e}:function(n){return 0<=t&&t<n.length&&n[t]===e})},MAX:function(n,t){return n=+n,u(">="===(t=t||"==")||"=>"===t?function(e){return En(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)>=n}:">"===t?function(e){return En(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)>n}:"<"===t?function(e){return En(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)<n}:"<="===t||"=<"===t?function(e){return En(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)<=n}:"!="===t?function(e){return En(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)!==n}:function(e){return En(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 En(function(n,t){return e[t]<n&&(n=e[t]),n},1/0,null,0,e.length-1,1)>=n}:">"===t?function(e){return En(function(n,t){return e[t]<n&&(n=e[t]),n},1/0,null,0,e.length-1,1)>n}:"<"===t?function(e){return En(function(n,t){return e[t]<n&&(n=e[t]),n},1/0,null,0,e.length-1,1)<n}:"<="===t||"=<"===t?function(e){return En(function(n,t){return e[t]<n&&(n=e[t]),n},1/0,null,0,e.length-1,1)<=n}:"!="===t?function(e){return En(function(n,t){return e[t]<n&&(n=e[t]),n},1/0,null,0,e.length-1,1)!==n}:function(e){return En(function(n,t){return e[t]<n&&(n=e[t]),n},1/0,null,0,e.length-1,1)===n})},BETWEEN:function(r,i,n){var t;return(i=+i)<(r=+r)&&(t=r,r=i,i=t),(arguments.length<3||null==n)&&(n=!0),u(n?function(n){for(var t=0,e=n.length;t<e;t++)if(n[t]<r||n[t]>i)return!1;return!0}:function(n){for(var t=0,e=n.length;t<e;t++)if(n[t]<=r||n[t]>=i)return!1;return!0})}},filter:null,dispose:function(){return this.filter=null,this},apply:function(n,t){var e=this.filter;return!e||!Sn(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 Sn(t)||Nn(t,u)?(Nn(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 Sn(e)||Nn(e,u)?(Nn(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 Sn(t)||Nn(t,u)?(Nn(t,u)||(t=u(t)),u(function(n){return e.apply(n,this)&&t.apply(n,this)})):e}}),D=J.Iterator=n({constructor:function n(t,e){var r=this,i=J.Arithmetic;if(!Nn(r,n))return new n(t,e);(qn(t)||An(t))&&(Nn(t[0],n)||Nn(t[t.length-1],n))?(r.name="Sequence",r.$=e||{},r.$.seq=G.call(t),r.$.count=En(function(n,t){return i.add(n,t.total())},i.O,r.$.seq),r.rewind()):qn(t)||An(t)?(r.name="List",r.$=e||{},r.$.seq=G.call(t),r.$.count=r.$.seq.length,r.rewind()):Sn(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(!Nn(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&&(En(function(n,t){t instanceof D&&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):(Nn(n,u)||Sn(n))&&(t.filter=Nn(n,u)?n:u(n)),this},mapTo:function(n,t){var e,r,i,u=this.$;return!1===n?u.output&&(u.output=null):Sn(n)&&(e=u.output,u.output=t&&e?(r=e,i=n,function(n){return null==n?null:i(r(n))}):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()):Nn(t,D)&&Sn(n)&&(r.sub=t,r.submethod=n,r.subcascade=-1===e?-1:1,r.subcount=J.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:Sn(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,qn(l.seq)){for(e=0,r=l.seq.length;e<r;e++)l.seq[e]instanceof D&&l.seq[e].rewind(n);for(l.seqindex=n<0?r-1:0;i=0<=l.seqindex&&l.seqindex<r?"List"===u.name?l.seq[l.seqindex]:l.seq[l.seqindex].next(n):null,0<=l.seqindex&&l.seqindex<r&&("List"===u.name||null==i)&&(l.seqindex+=n),null==i&&0<=l.seqindex&&l.seqindex<l.seq.length;);u.__item=i,u._item=u.output(u.__item),l.sub&&!0!==t&&(l.sub.rewind(n),u.__subitem=l.sub.next(n),u._subitem=null!=u._item&&null!=u.__subitem?u.fusion(u._item,u.__subitem):null)}else Sn(l.generator)&&(u.__item=l.generator.call(u,null,n,l.state,!0),u._item=u.output(u.__item),l.sub&&!0!==t&&(l.sub.rewind(n),u.__subitem=l.sub.next(n),u._subitem=null!=u._item&&null!=u.__subitem?u.fusion(u._item,u.__subitem):null));return u},total:function(n){var t=this.$;return(t.sub&&!n?t.subcount:t.count)||J.Arithmetic.O},index:function(n){return arguments.length?(this._index=n,this):this._index},item:function(n){return arguments.length?(this._item=n,this):this._item},hasNext:function(n){return this.$.sub?null!=this._subitem:null!=this.__item},next:function(n){var t,e,r,i=this,u=i.$;if(n=-1===n?-1:1,qn(u.seq)){do{for(t=i.__item,e=u.sub?i._subitem:i._item,r=null;null==r&&0<=u.seqindex&&u.seqindex<u.seq.length;)r="List"===i.name?u.seq[u.seqindex]:u.seq[u.seqindex].hasNext(n)?u.seq[u.seqindex].next(n):null,"List"!==i.name&&null!=r||(u.seqindex+=n);null==r&&(u.seqindex<0||u.seqindex>=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(Sn(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(Sn(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<n)&&this.hasNext()&&null!=(t=this.next());)r.push(t);return r},storeState:function(n){return null},resumeState:function(n){return this},__iter__:function(){return new D.Iterable(this)}}),"undefined"!=typeof Symbol&&void 0!==Symbol.iterator&&(D[F][Symbol.iterator]=D[F].__iter__),T=J.CombinatorialIterator=n(D,{constructor:function n(t,e,r,i){var u,l,s,o,m=this;J.Arithmetic;if(!Nn(m,n))return new n(t,e,r,i);m[X],(qn(t)||An(t))&&(Nn(t[0],n)||Nn(t[t.length-1],n))?((r=e||{}).seq=An(t)?G.call(t):t,t=null,m.n=e=r.seq.length,r.type="sequence",r.rand=r.rand||{},u=(r.rand.sequence=1)/0,s=1/0,o=l=-1/0,En(function(n,t){var e=t.base(!0,"min"),r=t.base(!0,"max"),i=t.dimension(!0,"min"),t=t.dimension(!0,"max");l<r&&(l=bax),e<u&&(u=e),o<t&&(o=t),i<s&&(s=i)},null,r.seq),r.base=r.maxbase=l,r.minbase=u,r.dimension=r.maxdimension=o,r.mindimension=s):(m.n=e||0,r=r||{}),t=t||"CombinatorialIterator",r.type=String(r.type||"default").toLowerCase(),r.order=r.order||dn,r.rand=r.rand||{},r.sub=null,r.instance=m,D.call(m,t,r),m.init().order(r.order),i&&Nn(i.iter,n)&&(i.method=i.method||"project",Sn(i.method)?m.fuse(i.method,i.iter,i.cascade):On(i.method)&&-1!==["multiply","add","concat","connect","join","combine","complete","interleave","juxtapose","intersperse","project"].indexOf(i.method)&&m["project"===i.method?"projectOn":i.method+"With"](i.iter,i.pos,i.cascade)),r.filter&&m.filterBy(r.filter)},__static__:{C:function(n,t,e,r){var i=-1===r;return e+1===n.length?(r=qn(n[e])?n[e][0]:n[e],Pn(n,n,t,i?e-(r||1):0,i?e-1:r-1)):Pn(n,n,t),n},D:function(n,t,e,r){var i,u=-1===r;return e+1===n.length?(r=qn(i=n[e])?i[0]:i,(r=(n=_e(t,n=u?n.slice(e-r,e):n.slice(0,r),!0)).length)<e&&n[u?"unshift":"push"].apply(n,new Array(e-r)),qn(i)?i[0]=r:i=r,n.push(i)):n=_e(t,n),n},P:function(n,t,e){var r;return t+1===n.length?(r=qn(n[t])?n[t][0]:n[t],n=-1===e?Qn(n,kn(n,n,0,t-(r||1),t-1),-t+r,t-(r||1),t-1):Qn(n,kn(n,n,0,0,r-1),t-r,0,r-1)):kn(n,n),n},T:function(n,t,e){return $n(n,t)},DUAL:function(n,t,e,r){if(null==n)return null;if(e&&"sequence"===e.type)return n;var i=e&&null!=e.order?e.order:dn,u=e&&null!=e.base?e.base:t,t=e&&null!=e.dimension?e.dimension:t;return r=-1===r?-1:1,n=gn&i?hn&i?this.C(n,u,t,e,r):this.P(this.C(n,u,t,e,r),t,r):hn&i?this.P(n,t,r):n},count:function(n,t){var e=J.Arithmetic,r=e.O;return t&&"sequence"===t.type&&t.seq&&t.seq.length?En(function(n,t){return e.add(n,t.total())},r,t.seq):r},initial:function(n,t,e,r){return t&&"sequence"===t.type&&t.seq&&t.seq.length?!0===r?this.succ(0,0,n,t,e):((e=-1===e?-1:1)<0||fn&(t&&null!=t.order?t.order:dn)?t.seq[t.seq.length-1]:t.seq[0]).item0(e):null},succ:function(n,t,e,r,i,u){if(null==e||null==n)return null;var l,s,o,m,c=J.Arithmetic;if(i=-1===i?-1:1,r&&"sequence"===r.type){if(!(m=r.seq)||!m.length)return null;for(n=fn&(r&&null!=r.order?r.order:dn)?(l=-1,m.length-1):(l=1,0),o=l*r.seq_curr+n,s=l*i;0<=o&&o<m.length&&!m[o].hasNext(i);)r.seq_curr+=i,o+=s;return 0<=o&&o<m.length?m[o].next(i):null}return null==t?null:this.unrank(c.add(t,i<0?c.J:c.I),e,r)},rand:function(n,t){var e,r,i,u,l,s,o=J.Arithmetic,m=o.O;if(t&&"sequence"===t.type){if(!(i=t.seq)||!i.length)return null;for(e=null!=t.last?t.last:o.sub(this.count(n,t),o.I),r=o.rnd(m,e),u=0,l=i.length;o.gte(r,s=i[u].total())&&(r=o.sub(r,s),!(l<=++u||o.lt(r,m))););return u<l&&o.gte(r,m)?i[u].random():null}return e=t&&null!=t.last?t.last:o.sub(this.count(n,t),o.I),r=o.rnd(m,e),o.equ(m,r)?this.initial(n,t,1):o.equ(e,r)?this.initial(n,t,-1):this.unrank(r,n,t)},rank:function(n,t,e){if(e&&"sequence"===e.type){var r,i,u,l,s,o,m,c=J.Arithmetic,a=c.O,f=c.J,h=e.seq;if(null==n||!h||!h.length)return f;for(i=h.length,r=0,s=a,u=n.length,m=!1,r=0;r<i;r++)if(u===(o=h[r]).dimension()||u>=o.$.mindimension&&u<=o.$.maxdimension){if(l=o[X].rank(n,o.n,o.$),c.gt(l,f)){m=!0;break}s=c.add(s,o.total())}return m?c.add(l,s):f}return yn()},unrank:function(n,t,e){if(e&&"sequence"===e.type){var r,i,u=J.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 r<i&&u.gte(n,l)?s[r][X].unrank(n,s[r].n,s[r].$):null}return yn()},connect:function(n,e,r,t,i,u){if("multiply"===n)return ae(!0,e,r);if("intersperse"===n){for(var l=r.slice(),s=e.length,o=0;o<s;o++)l.splice(l.length-e[o],0,(u&&u.length&&o<u.length?u:e)[o]);return l}if("juxtapose"===n)return r&&qn(r[0])?[e].concat(r):[e,r];if("add"===n||"connect"===n||"concat"===n){var m=e.length?e[0]+1:0;return Dn(e.length+r.length,"add"===n?function(n){return n<e.length?e[n]:e.length+r[n-e.length]}:"connect"===n?function(n){return n<e.length?(e[n]+1>m&&(m=e[n]+1),e[n]):m+r[n-e.length]}:function(n){return n<e.length?e[n]:r[n-e.length]})}if("complete"!==n&&"interleave"!==n&&"join"!==n&&"combine"!==n)return Dn(e.length,function(n){return 0<=e[n]&&e[n]<r.length?r[e[n]]:e[n]});var c=e.length,a=r.length,f=c+a,h=0,d=0,g=(p=0)<c?e[p]:-1,_=null!=u?p<u.length?u[p]:-1:g,v="complete"===n?_e(i,e,!0):null;if("combine"!==n)return Dn(f,"complete"===n?function(n){var t;return _===n?(t=g,g=++p<c?e[p]:-1,_=null!=u?p<u.length?u[p]:-1:g):t=v[r[h++]],t}:"interleave"===n?function(n){var t;return _===n?(t=g,g=++p<c?e[p]:-1,_=null!=u?p<u.length?u[p]:-1:g):t=r[h++],t}:function(n){var t;return g===n?(t=g,g=++p<c?e[p]:-1,d++):t=d+r[h++],t});for(var b=Dn(f,0,1),l=Dn(f),p=0;p<c;p++)l[e[p]]=b[e[p]];for(p=c-1;0<=p;p--)b.splice(e[p],1);for(h=p=0;h<a;){for(;p<f&&null!=l[p];)p++;p<f&&(l[p]=b[r[h]]),h++}return l}},name:"CombinatorialIterator",n:0,item__:null,_prev:null,_next:null,_traversed:null,dispose:function(n){var t=this;return!n&&t.$.sub&&(t.$.sub.dispose(),t.$.sub=null),"sequence"===t.$.type&&t.$.seq&&t.$.seq.length&&(En(function(n,t){t.dispose()},null,t.$.seq),t.$.seq=null),t.n=null,t.item__=null,t._prev=null,t._next=null,t._traversed&&(t._traversed.dispose(),t._traversed=null),D[F].dispose.call(t)},init:function(){var n=this[X],t=this.$,e=this.n,r=J.Arithmetic;return t.base=t.base||0,t.minbase=null!=t.minbase?t.minbase:t.base,t.maxbase=null!=t.maxbase?t.maxbase:t.base,t.dimension=Q.max(0,t.dimension||0),t.mindimension=Q.max(0,null!=t.mindimension?t.mindimension:t.dimension),t.maxdimension=Q.max(0,null!=t.maxdimension?t.maxdimension:t.dimension),t.count=n.count(e,t),t.first=r.O,t.last=r.gt(t.count,r.O)?r.sub(t.count,r.I):r.J,this},fuse:function(n,t,e,r){var i=D[F].fuse,u=this.$;return 1===arguments.length&&!1===n?(u.subpos=null,u.subbase=null,u.subminbase=null,u.submaxbase=null,u.subdimension=null,u.submindimension=null,u.submaxdimension=null,u.subposition=null,i.call(this,!1)):Nn(t,T)&&Sn(n)&&(-1!==e&&1!==e||(r=e,e=null),u.subpos=e||this.position(),u.subminbase=Q.min(u.minbase,t.base(!1,"min")),u.subbase=u.submaxbase=Q.max(u.maxbase,t.base(!1,"max")),i.call(this,n,t,r)),this},multiplyWith:function(n,t,e){var r=this.$;return Nn(n,T)&&(r.subdimension=r.dimension*n.dimension(),r.submindimension=r.mindimension*n.dimension(!1,"min"),r.submaxdimension=r.maxdimension*n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("multiply",n,t,e,r,i)},n,t,e)),this},addWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("add",n,t,e,r,i)},n,t,e)),this},connectWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("connect",n,t,e,r,i)},n,t,e)),this},concatWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("concat",n,t,e,r,i)},n,t,e)),this},juxtaposeWith:function(n,t,e){var r=this.$;return Nn(n,T)&&(r.subdimension=1+(n.$.subdimension||1),r.submindimension=1+(n.$.submindimension||1),r.submaxdimension=1+(n.$.submaxdimension||1),this.fuse(function(n,t,e,r,i){return T.connect("juxtapose",n,t,e,r,i)},n,t,e)),this},completeWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("complete",n,t,e,r,i)},n,t,e)),this},interleaveWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("interleave",n,t,e,r,i)},n,t,e)),this},joinWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("join",n,t,e,r,i)},n,t,e)),this},combineWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("combine",n,t,e,r,i)},n,t,e)),this},intersperseWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(-1!==t&&1!==t||(e=t,t=null),t=t||(1===this.dimension()?[this.base()-1]:Dn(this.dimension(),0,1)),r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("intersperse",n,t,e,r,i)},n,t,e)),this},projectOn:function(n,t,e){var r=this.$;return Nn(n,T)&&(r.subdimension=r.dimension,r.submindimension=r.mindimension,r.submaxdimension=r.maxdimension,this.fuse(function(n,t,e,r,i){return T.connect("project",n,t,e,r,i)},n,t,e)),this},base:function(n,t){var e=this.$;return"min"===t?e.sub&&!n&&e.subminbase||e.minbase||0:"max"===t?e.sub&&!n&&e.submaxbase||e.maxbase||0:e.sub&&!n&&e.subbase||e.base||0},dimension:function(n,t){var e=this.$;return"min"===t?e.sub&&!n&&e.submindimension||e.mindimension||0:"max"===t?e.sub&&!n&&e.submaxdimension||e.maxdimension||0:e.sub&&!n&&e.subdimension||e.dimension||0},position:function(n){var t=this.$;return t.sub&&!n&&t.subposition||t.position||null},total:function(n){var t=this.$,e=J.Arithmetic.O;return(t.sub&&!n?t.subcount:t.count)||e},output:function(n){var t=this.n,e=this.$,r=e.output||null,e=e.type||null;return null==n?null:null==r?"sequence"===e?n:n.slice():Sn(r)?r(n,t):qn(r)?En(function(n,t,e){return n[e]=0<=t&&t<r.length?r[t]:t,n},new Array(n.length),n):On(r)?En(function(n,t,e){return n+=0<=t&&t<r.length?r.charAt(t):String(t)},"",n):"sequence"===e?n:n.slice()},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,this.dimension(),this.base(),r.subpos)):n},_reset:function(n){var t,e,r=this,i=r[X],u=r.$,l=r.n,s=J.Arithmetic,o=s.O,m=(s.I,u.order);return r.__index=r._index=o,r._item=r.__item=r.item__=null,r._prev=!1,r._next=!1,t=u.count,e=u.last,"sequence"===u.type&&(u.seq_curr=u.seq&&u.seq.length?n<0?u.seq.length-1:0:-1),vn&m?("gen"===J.Options.RANDOM||1===u.rand[u.type]||s.gt(t,J.Options.MAXMEM)||s.isDefault()&&t<0?(r.__item=i.rand(l,u),r.__index=o):(r._traversed&&r._traversed.dispose(),r._traversed=new J.BitArray(s.val(t)),t=r.random("index",!0),r._traversed.set(+t),r.__item=i.unrank(t,l,u),null!=r.__item&&(r.__index=t)),r._index=o,r._update()):(r.__item=i.initial(l,u,n,!0),null!=r.__item&&(r.__index=n<0?e:o,r._update()),r._index=r.__index),r._item=r.output(r.__item),r._prev=!(vn&m||0<n)&&null!=r.__item,r._next=!(n<0&&!(vn&m))&&null!=r.__item,r},_update:function(){return this.item__=null,this},order:function(n,t){if(!arguments.length)return this._order;var e,r,i,u,l=this,s=(l[X],J.Arithmetic),o=(s.O,s.I,!0===n),m=(l.n,l.$);if(l._traversed&&(l._traversed.dispose(),l._traversed=null),o?n=m.order:On(n)&&-1<(r=n.indexOf("|"))?(e=n.substr(r+1),n=$e(n.substr(0,r))):e=n=$e(n),t=-1===t?-1:1,m.order=n,m.sub?(o?m.sub.rewind(t):m.sub.order(e,t),l.__subindex=m.sub.index(),l.__subitem=m.sub.next(t)):(l.__subindex=null,l.__subitem=null),l._subindex=null,l._subitem=null,"sequence"===m.type&&m.seq&&m.seq.length)for(i=0,u=m.seq.length;i<u;i++)o?m.seq[i].rewind(t):m.seq[i].order(n,t);return l._reset(t),m.sub&&(l._prev=l._prev&&null!=l.__subitem,l._next=l._next&&null!=l.__subitem,l._subindex=s.add(s.mul(l.__subindex,m.count),l._index),l._subitem=l.fusion(l._item,l.__subitem)),l},index:function(n,t){t=!!t;var e=this,r=e[X],i=J.Arithmetic,u=i.O,l=(i.I,i.J),s=e.n,o=e.$,m=o.sub&&!t?o.subcount:o.count,c=o.sub&&!t?e._subindex:e._index,a=o.order;return arguments.length?(n=i.wrapR(i.num(n),m),!i.equ(n,c)&&i.inside(n,l,m)&&(m=o.count,l=o.last,o.sub&&!t&&(o.sub.index(i.div(n,m)),e.__subindex=o.sub.index(),e.__subitem=o.sub.item(),n=i.mod(n,m)),vn&a||(e.__index=n,e._index=n,e.__item=i.equ(u,n)?r.initial(s,o,1):i.equ(l,n)?r.initial(s,o,-1):r.unrank(n,s,o),e._update(),e._item=e.output(e.__item),e._prev=null!=e.__item,e._next=null!=e.__item),o.sub&&(e._prev=e._prev&&null!=e.__subitem,e._next=e._next&&null!=e.__subitem,e._subindex=i.add(i.mul(e.__subindex,m),e._index),e._subitem=e.fusion(e._item,e.__subitem))),e):n=e.$.sub?e._subindex:e._index},item0:function(n,t){n=this[X].initial(this.n,this.$,-1===n?-1:1);return!0===t?n:this.output(n)},item:function(n,t){if(!arguments.length)return this.$.sub?this._subitem:this._item;var e,r,i,u,l=this,s=l[X],o=l.n,m=l.$,c=m.sub?m.subcount:m.count,a=m.sub?l._subindex:l._index,f=J.Arithmetic,h=f.O,d=(f.I,f.J),g=null;return On(t)?-1<(u=t.indexOf("|"))?(g=t.substr(u+1),t=$e(t.substr(0,u))):g=t=$e(t):g=null!=t?t=$e(t):(t=m.order,null),m.sub||(g=null),qn(n)?(c=m.count,e=m.last,i=m.order,m.order=t,l.__item=n.slice(),l.__index=s.rank(l.__item,o,m),l._update(),l._item=l.output(l.__item),l._index=l.__index,l._prev=null!=l.__item,l._next=null!=l.__item,l):(n=f.wrapR(f.num(n),c),t===m.order&&null===g&&f.equ(n,a)?m.sub?l._subitem:l._item:f.inside(n,d,c)?(d=null,c=m.count,e=m.last,m.sub&&(d=m.sub.item(f.div(n,c),g),n=f.mod(n,c)),o=vn&t?(r=null,i=m.order,m.order=t,l.output(s.rand(o,m))):(r=n,i=m.order,m.order=t,l.output(f.equ(h,n)?s.initial(o,m,1):f.equ(e,n)?s.initial(o,m,-1):s.unrank(r,o,m))),m.order=i,m.sub&&(o=l.fusion(o,d)),o):null)},random:function(n,t,e,r){var i,u,l=this[X],s=this.$,o=s.order;if(r=!!r,"index"===n){var m,c=J.Arithmetic,a=c.num,f=c.O,n=c.I;return t===!!t&&(r=t,e=t=null),m=s.sub&&!r?(m=s.subcount,c.sub(m,n)):(m=s.count,s.last),e=null==t&&null==e?(t=f,m):null==e?(t=a(t||0),m):(t=a(t),a(e)),c.rnd(t,e)}for(;s.order|=vn,i=l.rand(this.n,s),s.order=o,i=this.output(i),u=s.sub&&!r?this.fusion(i,s.sub.random()):i,s.filter&&null!=u&&!s.filter.apply(u,this););return u},rewind:function(n){return this.order(!0,-1===n?-1:1)},hasNext:function(n){return-1===n?!(vn&this.$.order)&&this._prev:this._next},next:function(n){var t,e,r,u,s,o,m,c,a=this,f=a[X],h=J.Arithmetic,d=h.O,g=h.I,_=h.J,v=a.n,b=a.$,p=b.order,y=b.count;if((n=-1===n?-1:1)<0&&vn&p)return null;t=n<0?_:g;do{if(m=null!=(o=b.sub?a._subitem:a._item),vn&p)if(u=b.last,h.lt(a._index,u))if(e=a._traversed){for(r=a.random("index",!0),s=.5<J.Math.rnd()?_:g;e.isset(+r);)r=h.wrap(h.add(r,s),d,u);e.set(+r),a.__item=f.unrank(r,v,b),null!=a.__item&&(a.__index=r)}else a.__item=f.rand(v,b),a.__index=null;else a._item=a.__item=null,a._traversed&&(a._traversed.dispose(),a._traversed=null);else a.__item=f.succ(a.__item,a.__index,v,b,n,a.item__),null!=a.__item&&(a.__index=h.add(a.__index,t));if(c=null!=a.__item)a._index=h.add(a._index,t),null===a.__index&&(a.__index=a._index),n<0?(a._prev=c,a._next=m):(a._prev=m,a._next=c);else if(b.sub&&b.sub.hasNext(n))if(a.__subindex=b.sub.index(),a.__subitem=b.sub.next(n),null==a.__subitem)a.__subindex=null,a.__subitem=null,n<0?(a._prev=c,a._next=m):(a._prev=m,a._next=c);else{if("sequence"===b.type&&b.seq&&b.seq.length)for(i=0,l=b.seq.length;i<l;i++)b.seq[i].rewind(n);a._reset(n),c=null!=a.__item}else a.__subindex=null,a.__subitem=null,n<0?(a._prev=c,a._next=m):(a._prev=m,a._next=c);a._item=a.output(a.__item),b.sub&&(c=c&&null!=a.__subitem,a._subindex=c?h.add(h.mul(a.__subindex,y),a._index):null,a._subitem=c?a.fusion(a._item,a.__subitem):null,n<0?a._prev=c:a._next=c)}while(b.filter&&null!=o&&!b.filter.apply(o,a));return o},range:function(n,t){var e,r,i,u,l=this,s=J.Arithmetic,o=s.num,m=s.O,c=s.I,a=l.$,f=a.sub?a.subcount:a.count,h=a.sub?s.sub(f,c):a.last,d=1,c=arguments.length,a=!(vn&a.order);if(t=c<1?(n=m,h):c<2?(n=o(n),h):(n=o(n),o(t)),n=s.wrapR(n,f),t=s.wrapR(t,f),s.gt(n,t)&&(f=n,n=t,t=f,d=-1),n=s.clamp(n,m,h),a&&(t=s.clamp(t,m,h)),s.lte(n,t)){for(h=[l.$.order,l.__index,l._index,l.__item&&l.__item.slice(),l._item,l.__subindex,l._subindex,l.__subitem,l._subitem,l._prev,l._next],a&&l.index(n),r=s.val(s.sub(t,n)),e=new Array(r+1),u=0;u<=r&&null!=(i=l.next());)e[u++]=i;e.length>u&&(e.length=u),d<0&&1<e.length&&kn(e,e),l.$.order=h[0],l.__index=h[1],l._index=h[2],l.__item=h[3],l._item=h[4],l.__subindex=h[5],l._subindex=h[6],l.__subitem=h[7],l._subitem=h[8],l._prev=h[9],l._next=h[10],l._update()}else e=[];return e},storeState:function(n){var t=this,t=[t.$.order,null==t.__index?null:t.__index.toString(),null==t._index?null:t._index.toString(),t.__item,t._item,null==t.__subindex?null:t.__subindex.toString(),null==t._subindex?null:t._subindex.toString(),t.__subitem,t._subitem,t._prev,t._next,t.$.sub?t.$.sub.storeState(!0):null];return n?t:JSON.stringify(t)},resumeState:function(n){var t=this,e=J.Arithmetic;return null!=n&&(n=On(n)?JSON.parse(n):n,t.$.order=n[0],t.__index=null==n[1]?null:e.num(n[1]),t._index=null==n[2]?null:e.num(n[2]),t.__item=n[3],t._item=n[4],t.__subindex=null==n[5]?null:e.num(n[5]),t._subindex=null==n[6]?null:e.num(n[6]),t.__subitem=n[7],t._subitem=n[8],t._prev=n[9],t._next=n[10],t.$.sub&&n[11]&&t.$.sub.resumeState(n[11])),t}}),P=J.Progression=n(D,{constructor:function n(t,e,r,i){var u=this,l=J.Arithmetic,s=l.num,o=l.O,m=l.I;if(!Nn(u,n))return new n(t,e,r,i);qn(t)||An(t)?(i=e||{},e=1<t.length?t[1]:null,r=2<t.length?t[2]:null,t=0<t.length?t[0]:null):i=i||{},i.type=String(i.type||"arithmetic").toLowerCase(),i.NumberClass=Cn(i.NumberClass,Z)?i.NumberClass:null,u._min=Nn(t,Z)?t.num:s(t||0),u._step=Nn(e,Z)?e.num:s(null==e?1:e),u._max=null==r?l.INF:l.INF===r?r:Nn(r,Z)?r.num:s(r),!i.NumberClass&&Nn(t,Z)&&(i.NumberClass=t[X]),"geometric"===i.type?l.equ(o,u._min)||l.equ(m,u._step)?i.count=m:l.equ(o,u._step)||l.equ(l.J,u._step)?i.count=l.II:i.count=l.INF===u._max?m:l.add(m,vt(l.div(u._max,u._min),l.abs(u._step))):l.equ(o,u._step)?i.count=m:i.count=l.INF===u._max?m:l.add(m,l.div(l.sub(u._max,u._min),l.abs(u._step))),i.last=l.sub(i.count,m),D.call(u,"Progression",i),u.rewind()},_min:null,_step:null,_max:null,dispose:function(){return this._min=null,this._step=null,this._max=null,D[F].dispose.call(this)},rewind:function(n,t){n=-1===n?-1:1;var e=this,r=e.$,i=J.Arithmetic;return n<0?i.INF===e._max?(e.__item=null,e._item=null):("geometric"===e.$.type?e.__item=i.mul(e._min,i.pow(e._step,e.$.last)):e.__item=i.add(e._min,i.mul(e._step,e.$.last)),e._item=e.output(r.NumberClass?new r.NumberClass(e.__item):e.__item)):(e.__item=e._min,e._item=e.output(r.NumberClass?new r.NumberClass(e.__item):e.__item)),r.sub&&!0!==t&&(r.sub.rewind(n),e.__subitem=r.sub.next(n),e._subitem=null!=e._item&&null!=e.__subitem?e.fusion(e._item,e.__subitem):null),e},hasNext:function(n){n=-1===n?-1:1;var t=this.$;return J.Arithmetic.INF===this._max?0<n&&(!t.sub||null!=this.__subitem):t.sub?null!=this._subitem:null!=this.__item},next:function(n){n=-1===n?-1:1;for(var t,e,r=this,i=r.$,u=J.Arithmetic;e=r.__item,t=i.sub?r._subitem:r._item,null!=e&&("geometric"===i.type?n<0?u.equ(e,r._min)?r.__item=null:r.__item=u.div(e,r._step):u.INF!==r._max&&u.equ(e,r._max)?r.__item=null:r.__item=u.mul(e,r._step):n<0?u.equ(e,r._min)?r.__item=null:r.__item=u.sub(e,r._step):u.INF!==r._max&&u.equ(e,r._max)?r.__item=null:r.__item=u.add(e,r._step),null!=r.__item&&(u.lt(r.__item,r._min)||u.INF!==r._max&&u.gt(r.__item,r._max))&&(r.__item=null),r._item=null==r.__item?null:r.output(i.NumberClass?new i.NumberClass(r.__item):r.__item)),null==r.__item&&i.sub&&i.sub.hasNext(n)&&(r.rewind(n,!0),r.__subitem=i.sub.next(n),r._subitem=null!=r._item&&null!=r.__subitem?r.fusion(r._item,r.__subitem):null),i.filter&&null!=t&&!i.filter.apply(t,r););return t},storeState:function(n){var t=this,t=[t._min.toString(),t._step.toString(),t._max.toString(),null==t.__item?null:t.__item.toString(),null==t._item?null:t._item.toString(),null==t.__subitem?null:t.__subitem.toString(),null==t._subitem?null:t._subitem.toString(),t.$.sub?t.$.sub.storeState(!0):null];return n?t:JSON.stringify(t)},resumeState:function(n){var t=this,e=J.Arithmetic;return null!=n&&(n=On(n)?JSON.parse(n):n,t._min="-Infinity"===n[0]?e.NINF:"Infinity"===n[0]?e.INF:e.num(n[0]),t._step="-Infinity"===n[1]?e.NINF:"Infinity"===n[1]?e.INF:e.num(n[1]),t._max="-Infinity"===n[2]?e.NINF:"Infinity"===n[2]?e.INF:e.num(n[2]),t.__item=null==n[3]?null:e.num(n[3]),t._item=null==n[4]?null:e.num(n[4]),t.__subitem=null==n[5]?null:e.num(n[5]),t._subitem=null==n[6]?null:e.num(n[6]),t.$.sub&&n[7]&&t.$.sub.resumeState(n[7])),t}}),k=function n(){var u=this,l=null;if(!Nn(u,n))return new n;l=c(),u.dispose=function(){return u.empty(),l=null,u},u.empty=function(){var n,t,e,r;if(!l)return u;for(n in l)if(z.call(l,n)&&null!=l[n])for(e=0,r=(t=l[n]).length;e<r;e++)t[e]&&t[e].dispose();return u},u.reset=function(){return u.empty(),l=c(),u},u.add=function(n,t){var e=n.next();return null==e?n.dispose():(e=String(e),l[e]?l[e].push(n):l[e]=[n]),u},u.has=function(n){var t=String(n);return!!l[t]&&(function(n,t){var e,r,i=l[t];if(null==i)return;for(delete l[t],e=0,r=i.length;e<r;e++)u.add(i[e],n)}(n,t),!0)}},$=J.PrimeSieve=n(D,{constructor:function n(t){var e=J.Arithmetic;if(!Nn(this,n))return new n(t);(t=t||{}).type=String(t.type||"eratosthenes").toLowerCase(),t.NumberClass=Cn(t.NumberClass,Z)?t.NumberClass:null,t.count=e.I,this._multiples=new k,this._small_primes=bt(),this._small_primes&&this._small_primes.length||(this._small_primes=[e.II]),this._p=0,D.call(this,"PrimeSieve",t)},_multiples:null,_small_primes:null,_p:0,dispose:function(){return this._multiples&&this._multiples.dispose(),this._multiples=null,this._small_primes=null,this._p=null,D[F].dispose.call(this)},rewind:function(n){return this._multiples.reset(),this._p=0,this},hasNext:function(n){return 0<(n=-1===n?-1:1)},next:function(n){if((n=-1===n?-1:1)<0)return null;var t,e,r,i,u,l=this,s=l.$,o=l._multiples,m=l._small_primes,c=J.Arithmetic,a=c.II,f=l.__item;do{if(l._p<m.length)f=m[l._p++],c.gt(f,a)&&(t=c.mul(f,f),e=c.add(f,f),r=m[m.length-1],c.lt(t,r)&&(i=c.div(c.sub(r,t),e),t=c.add(t,c.mul(i,e)),c.lte(t,r)&&(t=c.add(t,e))),o.add(new P(t,e,c.INF)));else{if(c.equ(f,a))f=c.num(3);else for(;f=c.add(f,a),o.has(f););t=c.mul(f,f),e=c.add(f,f),o.add(new P(t,e,c.INF))}u=l.output(s.NumBerClass?new s.NumBerClass(f):f)}while(s.filter&&null!=u&&!s.filter.apply(u,l));return l.__item=f,l._item=u,f}}),L=J.Tensor=n(T,{constructor:function e(){var t,r,n,i,u=null,l=G.call(arguments),s=l.length&&!Nn(l[l.length-1],T)&&!qn(l[l.length-1])&&l[l.length-1]!==+l[l.length-1]&&l.pop()||{};if(l.length&&qn(l[0])&&(l=l[0]),l&&l.length||(l=[]),!Nn(this,e))return new e(l,s);s.type=String(s.type||"tensor").toLowerCase(),s.order=s.order||dn,s.rand=s.rand||{},"partial"===s.type?(l=qn(l)&&l.length?l[0]:l,n=-1,t=s.data||[],r=s.position||null,Nn(l,T)?n=l=(u=l).base():u=s.sub,l=+(l||0)||0,In(t)&&(r=[],t=rn(t).map(function(n){return n=+n,r.push(n),t[n]})),An(t)&&(t=G.call(t)),An(r)&&(r=G.call(r)),t.length&&(On(t[0])||t[0].length&&(!0===t[0][0]||!1===t[0][0]))&&(n===l&&(l+=t.length,n=-1),t=e.generate(l,t,r,s.ordering||null)),n===l&&(l+=(t.length?t[0].length:0)||0,n=-1),s.data=t,s.position=r||Dn((t.length?t[0].length:0)||0,0,1),s.dimension=s.position.length,s.base=l,s.rand.partial=1):"tuple"===s.type?(l[0]=l[0]||1,l[1]=l[1]||1,Nn(l[0],T)?(u=l[0],l[0]=u.dimension()):Nn(l[1],T)?(u=l[1],l[1]=u.base()):u=s.sub,s.base=l[1],s.dimension=Q.max(0,l[0]),"gray"===s.output&&(s.output=function(n,t){return e.gray(n,t[1])})):(n=En(function(n,t){return t<n[0]&&(n[0]=t),t>n[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.gray(n,t)}:"inversion"===s.output?s.output=function(n,t){return e.inversion(n)}:qn(s.output)&&(i=s.output,s.output=function(n,t){return e.component(n,i)})),T.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:T.C,P:T.P,T:T.T,DUAL:T.DUAL,count:function(n,t){var e=J.Arithmetic.O,r=t&&t.type?t.type:"tensor";return"partial"===r?t.data&&t.data.length?J.Arithmetic.num(t.data.length):e:"tuple"===r?!n||n[0]<=0?e:Bt(n[1],n[0]):n&&n.length?et(n):e},initial:function(t,n,e){var r,i=n&&n.type?n.type:"tensor",u=n&&n.order?n.order:dn;return e=-1===e?-1:1,(!(gn&u)&&fn&u||gn&u&&!(fn&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]?Dn(t[0],e<0?t[1]-1:0,0):[]:t.length?e<0?Dn(t.length,function(n){return t[n]-1}):Dn(t.length,0,0):[],this.DUAL(r,t,n))},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:dn,o=J.Arithmetic;return i=-1===i?-1:1,"partial"===l?r.data&&r.data.length?(fn&s&&(i=-i,null!=t&&(t=o.sub(o.num(r.data.length-1),t))),null==t&&(t=Ee(r.data,n,!0)),t=o.val(t),i<0?0<=t-1?r.data[t-1]:null:0<=t&&t+1<r.data.length?r.data[t+1]:null):null:!e[0]||e[0]<=0?null:function(n,t,e,r,i){var u,l,s,o,m,c,a,f=t;"tuple"===r?(s=f[0],f=f[1]):s=f.length;t=a=s-1,s=0,m=o=1,c=0,gn&i&&(o=-o,t=a-t,s=a-s,m=-m,c=a-c);hn&i&&(o=-o,t=a-t,s=a-s,m=-m,c=a-c);fn&i&&(e=-e);if(e<0)if("tuple"===r){for(u=t;0<=u&&u<=a&&0===n[u];)u-=o;if(0<=u&&u<=a)for(--f,n[u]=n[u]-1,l=u+o;0<=l&&l<=a;l+=o)n[l]=f;else n=null}else{for(u=t;0<=u&&u<=a&&0===n[u];)u-=o;if(0<=u&&u<=a)for(n[u]=n[u]-1,l=u+o;0<=l&&l<=a;l+=o)n[l]=f[m*l+c]-1;else n=null}else if("tuple"===r){for(u=t;0<=u&&u<=a&&n[u]+1===f;)u-=o;if(0<=u&&u<=a)for(n[u]=n[u]+1,l=u+o;0<=l&&l<=a;l+=o)n[l]=0;else n=null}else{for(u=t;0<=u&&u<=a&&n[u]+1===f[m*u+c];)u-=o;if(0<=u&&u<=a)for(n[u]=n[u]+1,l=u+o;0<=l&&l<=a;l+=o)n[l]=0;else n=null}return n}(n,e,i,l,s)},rand:function(t,n){var e=J.Math.rndInt,r=n&&n.type?n.type:"tensor",i="partial"===r?n.data&&n.data.length?n.data[e(0,n.data.length-1)]:null:(i="tuple"===r?t[0]?Dn(t[0],function(n){return e(0,t[1]-1)}):[]:t.length?Dn(t.length,function(n){return e(0,t[n]-1)}):[],this.DUAL(i,t,n));return i},randu:T.rand,rank:function(n,t,e){var r,i,u=J.Arithmetic,l=e&&null!=e.order?e.order:dn,s=e&&e.type?e.type:"tensor",o=u.add,m=u.sub,c=u.mul,a=u.O,f=u.J;if("partial"===s)a=u.num(Ee(e.data,n,!0));else if(n=this.DUAL(n,t,e),"tuple"===s){if(!(r=t[0]))return f;for(t=t[1],i=0;i<r;i++)a=o(c(a,t),n[i])}else{if(!(r=t.length))return f;for(i=0;i<r;i++)a=o(c(a,t[i]),n[i])}return(!(gn&l)&&fn&l||gn&l&&!(fn&l))&&(a=m(e&&null!=e.last?e.last:m(this.count(t,e),u.I),a)),a},unrank:function(n,t,e){var r,i,u,l,s,o,m=J.Arithmetic,c=e&&null!=e.order?e.order:dn,a=e&&e.type?e.type:"tensor",f=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((!(gn&c)&&fn&c||gn&c&&!(fn&c))&&(n=f(e&&null!=e.last?e.last:f(this.count(t,e),m.I),n)),"partial"===a){if(!e.data||!e.data.length)return null;s=0<=(n=g(n))&&n<e.data.length?e.data[n]:null}else{if("tuple"===a){if(!(o=t[0]))return[];for(s=new Array(o),i=t[1],r=n,u=o-1;0<=u;u--)l=h(r,i),r=d(r,i),s[u]=g(l)}else{if(!(o=t.length))return[];for(s=new Array(o),r=n,u=o-1;0<=u;u--)l=h(r,i=t[u]),r=d(r,i),s[u]=g(l)}s=this.DUAL(s,t,e)}return s},gray:function(n,t,e){return((e=-1===e?-1:1)<0?jn:Ln)(new Array(n.length),n,t)},inversion:function(n){for(var t=n.length,e=t?[0]:[],r=1;r<t;r++)e.splice(r-n[r],0,r);return e},product:ae,directsum:function(){for(var t,e=arguments,n=e.length,r=0,i=0;i<n;i++)r+=e[i].length;return i=t=0,Dn(r,function(n){return 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:Dn(t.length,function(n){return n<e.length&&0<=t[n]&&t[n]<e[n].length?e[n][t[n]]:t[n]})},affine:function(){var r=1===arguments.length&&qn(arguments[0])?arguments[0]:arguments;return r?function(e){return Dn(e.length,function(n){if(n>=r.length||null==r[n])return e[n];var t=r[n];return wn(t)?e[n]+t:t[0]*e[n]+(t[1]||0)})}:xn},conditional:fe,generate:function(n,t,i,u,l){l=l||{},i=i||Dn(t.length||0,0,1);for(var e,r,s,o,m,c,a,f,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,y=[],x=[],q={},A=function(n){return d<=n&&n<=g},p=!(t=[]),I=m=0;I<b;I++,m++)if(On(r=v[I]))if(e=r.match(nn)){if(!(s=0<e[1].indexOf("..")?(e=e[1].split("..").map(Number))[0]>e[1]?_e(n,Dn(e[0]-e[1]+1,e[1],1).filter(A)).reverse():_e(n,Dn(e[1]-e[0]+1,e[0],1).filter(A)):_e(n,e[1].split(",").map(Number).filter(A))).length){p=!0;break}t.push(s)}else if(e=r.match(Y)){if(!(s=(0<e[1].indexOf("..")?(e=e[1].split("..").map(Number))[0]>e[1]?Dn(e[0]-e[1]+1,e[0],-1):Dn(e[1]-e[0]+1,e[0],1):e[1].split(",").map(Number)).filter(A)).length){p=!0;break}t.push(s)}else if(a=!0,c=[],f=null,r=r.replace(K,function(n,t){var e=parseInt(t,10),t="v"+String(e);return!isNaN(e)&&A(e)||(a=!1),a&&-1===c.indexOf(e)&&c.push(e),t}),a){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<t?-1:1}}());try{f=new Function(c.map(function(n){return"v"+String(n)}).join(","),"return Math.floor("+r+");")}catch(n){f=null}if(Sn(f)){for(o=0;o<c.length;o++)q[c[o]]?q[c[o]].push(f):q[c[o]]=[f],-1===i.indexOf(c[o])&&-1===x.indexOf(c[o])&&x.push(c[o]);y.push([f,null,null,c,i[m]]),t.push(y[y.length-1])}else i&&i.splice(m--,1)}else i&&i.splice(m--,1);else if(qn(r)){if(!(s=!1===r[0]?_e(n,r.slice(1).filter(A)):(!0===r[0]?r.slice(1):r).filter(A)).length){p=!0;break}t.push(s)}if(p&&(t=[]),x.length)for(I=0,b=x.length;I<b;I++)i.push(x[I]),p||t.push(Dn(_,d,1));if(-1===(I=Vn(i))?(kn(i,i),p||kn(t,t)):0===I&&(r=Wn(i,1,!1,!0),Me(i,r),p||Me(t,r)),p)return[];if(y.length)for(I=0,b=y.length;I<b;I++){for((e=y[I])[1]=e[3].map(function(n){return i.indexOf(n)}),e[2]=i.indexOf(e[4]),o=0;o<e[3].length;o++)if(f=q[e[3][o]],!Sn(t[e[1][o]][0])){if(!(s=t[e[1][o]].filter(function(n){for(var t,e=0,r=f.length;e<r;e++)if(1===f[e].length&&(t=f[e](n),isNaN(t)||t<d||g<t))return!1;return!0})).length){p=!0;break}t[e[1][o]]=s}if(p)break}return p?[]:(u="="===u?ln:"!="===u||"<>"===u?sn:"<"===u?on:"<="===u||"=<"===u?an:">"===u?mn:(">="===u||"=>"===u)&&cn,h=Sn(l.extra_conditions)?function(n,t,e){var r=n[t];return!(r<d||g<r||on===u&&i[t]>r||mn===u&&i[i.length-1]-i[t]>r)&&l.extra_conditions(n,t,e)}:function(n,t,e){n=n[t];return!(n<d||g<n||on===u&&i[t]>n||mn===u&&i[i.length-1]-i[t]>n)},!0===l.lazy?t:fe(t,u,h))}}}),J.Permutation=n(T,{constructor:function n(t,e){var r=null;if(!Nn(this,n))return new n(t,e);(e=e||{}).type=String(e.type||"permutation").toLowerCase(),Nn(t=t||0,T)?t=(r=t).dimension():r=e.sub,e.base=t,e.dimension=Q.max(0,t),e.rand=e.rand||{},e.rand.involution=1,e.rand.connected=1,"multiset"===e.type&&(e.multiplicity=qn(e.multiplicity)&&e.multiplicity.length?e.multiplicity.slice():Dn(e.dimension,1,0),e.multiplicity=e.multiplicity.concat(Dn(e.dimension-En(nt,0,e.multiplicity),1,0)),e.base=e.multiplicity.length,e.multiset=Ie(e.multiplicity,e.dimension)),T.call(this,"Permutation",t,e,r?{method:e.submethod,iter:r,pos:e.subpos,cascade:e.subcascade}:null)},__static__:{C:T.C,P:T.P,T:T.T,DUAL:T.DUAL,count:function(n,t){var e=J.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?Kt(n,t.multiplicity):"derangement"===i?null!=l?e.mul(Kt(n,l),Kt(n-l,!1)):Kt(n,!1):"involution"===i?Kt(n,!0):"connected"===i?Kt(n-1):null!=u?te(n,u,1):Kt(n)},initial:function(n,t,e){var r,i=t&&t.type?t.type:"permutation",u=t&&null!=-t.order?t.order:dn,l=t&&null!=t["cycles="]?0|t["cycles="]:null,s=t&&null!=t["fixed="]?0|t["fixed="]:null;if(n<0)return null;if(0===n)return[];if(e=-1===e?-1:1,(!(gn&u)&&fn&u||gn&u&&!(fn&u))&&(e=-e),"cyclic"===i)r=e<0?[n-1].concat(Dn(n-1,0,1)):Dn(n,0,1);else if("derangement"===i){if(null!=s||n<2)return null;r=1&n?(s=Q.floor(n/2),e<0?Dn(n-s-1,n-1,-1).concat([s-1,s]).concat(Dn(s-1,s-2,-1)):Dn(n-3,function(n){return 1&n?n-1:n+1}).concat([n-2,n-1,n-3])):e<0?Dn(n,n-1,-1):Dn(n,function(n){return 1&n?n-1:n+1})}else r="multiset"===i?e<0?t.multiset.slice().reverse():t.multiset.slice():"connected"===i?Ne([e<0?Dn(n,n-1,-1):[n-1].concat(Dn(n-1,0,1))],n):"involution"!==i&&null!=l?null:e<0?Dn(n,n-1,-1):Dn(n,0,1);return r=this.DUAL(r,n,t)},succ:function(n,t,e,r,i,u){if(!e||e<=0||null==n)return null;var l=r&&r.type?r.type:"permutation",s=r&&null!=r["cycles="]?0|r["cycles="]:null,o=r&&null!=r["fixed="]?0|r["fixed="]:null;return"derangement"===l&&null!=o||"permutation"===l&&null!=s?null:function n(t,e,r,i,u,l,s){var o,m,c,a,f,h,d,g,_,v,b,p,y,x=e,l=null==l?x:l;if(x<=0)return null;if("connected"===i)return n(t,e-1,r,"permutation",u,null,s);0;y=x-1;g=1;d=y;_=1;v=0;b=1;p=0;gn&u&&(g=-g,d=y-d,_=-_,v=l-1-v,r=-r);hn&u&&(g=-g,d=y-d,b=-1,p=l-1);fn&u&&(r=-r);if(r<0)if("cyclic"===i)if(0<_*t[o=y-d]+v)for(b=x-1,g=x+g,c=0;c<x;c++)f=(_*t[o]+v+b)%x,t[o]=_*f+v,o=(o+g)%x;else t=null;else if("involution"===i)t=null;else do{for(h=!1,o=d-g;0<=o&&o<=y&&_*t[o]<=_*t[o+g];)o-=g;if(0<=o&&o<=y){for(m=d;0<=m&&m<=y&&0<g*(m-o)&&_*t[o]<=_*t[m];)m-=g;for(f=t[o],t[o]=t[m],t[m]=f,c=o+g,a=d;0<=c&&c<=y&&0<=a&&a<=y&&0<g*(a-c);)f=t[c],t[c]=t[a],t[a]=f,h=h||b*c+p===t[c]||b*a+p===t[a],c+=g,a-=g;if("derangement"===i)for(0<=m&&m<=y&&(h=h||b*m+p===t[m]),0<=a&&a<=y&&(h=h||b*a+p===t[a]),h=h||b*o+p===t[o],c=o-g;!h&&0<=c&&c<=y;c-=g)h=b*c+p===t[c];else h=!1}else t=null}while(t&&h);else if("cyclic"===i)if(_*t[o=y-d]+v<x-1)for(b=x+1,g=x+g,c=0;c<x;c++)f=(_*t[o]+v+b)%x,t[o]=_*f+v,o=(o+g)%x;else t=null;else if("involution"===i){for(o=x,h=!0;h&&o--;)for(m=t[o],t[o]=o,t[m]=m;m--;)if(t[m]===m){t[o]=m,t[m]=o,h=!1;break}h&&(t=null)}else do{for(h=!1,o=d-g;0<=o&&o<=y&&_*t[o]>=_*t[o+g];)o-=g;if(0<=o&&o<=y){for(m=d;0<=m&&m<=y&&0<g*(m-o)&&_*t[o]>=_*t[m];)m-=g;for(f=t[o],t[o]=t[m],t[m]=f,c=o+g,a=d;0<=c&&c<=y&&0<=a&&a<=y&&0<g*(a-c);)f=t[c],t[c]=t[a],t[a]=f,h=h||b*c+p===t[c]||b*a+p===t[a],c+=g,a-=g;if("derangement"===i)for(0<=m&&m<=y&&(h=h||b*m+p===t[m]),0<=a&&a<=y&&(h=h||b*a+p===t[a]),h=h||b*o+p===t[o],c=o-g;!h&&0<=c&&c<=y;c-=g)h=b*c+p===t[c];else h=!1}else t=null}while(t&&h);return t}(n,e,i=-1===i?-1:1,l,r&&null!=r.order?r.order:dn,r&&null!=r.base?r.base:null,u)},rand:function(n,t){var e=J.Math.rndInt,r=t&&t.type?t.type:"permutation",i=t&&null!=t["cycles="]?0|t["cycles="]:null,u=t&&null!=t["fixed="]?0|t["fixed="]:null;if(n<0)return null;if(0===n)return[];if("cyclic"===r)var l=e(0,n-1),s=0<l?Dn(n-l,l,1).concat(Dn(l,0,1)):Dn(n,0,1);else if("derangement"===r){if(null!=u)return null;s=new Array(n);var o,m,c=!1;do{for(o=0;o<n;o++)s[o]=o;for(o=n-1,c=!1;0<=o;){if(s[m=e(0,o)]===o){c=!0;break}d=s[o],s[o]=s[m],s[m]=d,o--}c=c||0===s[0]}while(c)}else if("involution"===r){s=Dn(n,0,1);for(var a,f,h,d,g,_=J.Math.rnd,v=.5,b=1,p=n,y=[1].concat(Dn(n-1,function(){var n=v;return v=1/(1+(b+=1)*v),n})),x=Dn(n,0,1);2<=p;)a=x[p-1],v=y[--p],d=_(),v<d&&(h=x[f=e(0,p-1)],--p,g=x[f],x[f]=x[p],x[p]=g,g=s[h],s[h]=s[a],s[a]=g)}else if("multiset"===r)s=Bn(t.multiset.slice());else if("connected"===r)s=Bn(Dn(n,0,1),!0);else{if(null!=i)return null;s=Bn(Dn(n,0,1))}return s=this.DUAL(s,n,t)},randu:T.rand,rank:function(t,e,n){var r,i,u,l,s,o,m,c,a,f,h=J.Arithmetic,d=n&&n.type?n.type:"permutation",g=n&&null!=n["cycles="]?0|n["cycles="]:null,_=n&&null!=n["fixed="]?0|n["fixed="]:null,v=n&&null!=-n.order?n.order:dn,b=h.sub,p=h.add,y=h.mul,x=h.div,q=h.O,A=h.I,I=h.J;if(e=e||t.length,!t||e<0)return I;if(0===e)return q;if(t=this.DUAL(t,e,n),"cyclic"===d)q=h.num(t[0]);else if("connected"===d){if(e===t.length){if(t=Ce(t)[0],e!==t.length)return I;if((s=t.indexOf(e-1))<0)return I;t=Dn(e,function(n){return t[(n+s)%e]}).slice(1)}if(e-1!==t.length)return I;for(o=we(null,t),u=e-2,r=0;r<u;r++)q=p(y(q,e-1-r),o[r])}else{if("involution"===d)return yn();if("derangement"===d){if(null!=_)return yn();for(m=new Array(e),c={},r=0;r<e;r++){if((l=t[r])<0||e<=l||r===l||1===c[l])return I;c[l]=1,m[l]=r}for(o=function(n,e,t){for(var r=e.length,i=Dn(r,0,0),u=0;u<r;u++)i[Q.min(u,e[u])]++;return n=En(function(n,t){return n[t]=t+1===r?0:n[t+1]+i[t+1],n},n||new Array(r),null,r-1,0,-1),-1===t&&(n=En(function(n,t){return n[t]=r-t-1-n[t]-(t<e[t]),n},n,null,0,r-1,1)),n}(null,t),r=0;r+1<e;r++)q=p(q,ne(e,t[r],r,s=o[r],m));return q}if("multiset"===d)for(f=n.multiplicity.slice(),a=n&&null!=n.count?n.count:Kt(e,f),u=e-1,r=0;r<u&&h.gt(a,A);r++)q=p(q,x(y(a,tt(f,0,(i=t[r])-1,1)),e-r)),a=x(y(a,f[i]),e-r),f[i]--;else{if(null!=g)return yn();for(c={},r=0;r<e;r++){if((l=t[r])<0||e<=l||1===c[l])return I;c[l]=1}for(o=we(null,t),u=e-1,r=0;r<u;r++)q=p(y(q,e-r),o[r])}}return(!(gn&v)&&fn&v||gn&v&&!(fn&v))&&(q=b(n&&null!=n.last?n.last:b(this.count(e,n),A),q)),q},unrank:function(t,e,n){var r,i,u,l,s,o,m,c,a,f,h,d,g=J.Arithmetic,_=n&&n.type?n.type:"permutation",v=n&&null!=n["cycles="]?0|n["cycles="]:null,b=n&&null!=n["fixed="]?0|n["fixed="]:null,p=n&&null!=-n.order?n.order:dn,y=g.mod,x=g.div,q=g.mul,A=(g.add,g.sub),I=g.val;if(e<0)return null;if(null==(t=null==t?null:g.num(t))||!g.inside(t,g.J,n&&null!=n.count?n.count:this.count(e,n)))return null;if(0===e)return[];if((!(gn&p)&&fn&p||gn&p&&!(fn&p))&&(t=A(n&&null!=n.last?n.last:A(this.count(e,n),g.I),t)),"cyclic"===_)t=I(t),r=Dn(e,function(n){return(t+n)%e});else{if("involution"===_)return yn();if("connected"===_){for((r=Dn(e-1))[e-2]=0,u=t,l=e-3;0<=l;l--)f=y(u,a=e-1-l),u=x(u,a),r[l]=I(f);Se(r,r),r=Ne([[e-1].concat(r)],e)}else if("derangement"===_){if(null!=b||e<2)return null;for(r=new Array(e),i=Dn(e,-1,0),l=0;l<e&&g.gte(t,g.O);){for(s=c=0;s<l;s++)c+=r[s]>l;for(u=g.O,m=e-1;0<=m&&(m===l||0<=i[m]&&i[m]<l||(u=ne(e,m,l,e-l-1-c-(l<m),i),!g.lte(u,t)));m--);if(m<0)break;t=A(t,u),i[r[l]=m]=l,l++}}else if("multiset"===_)for(d=n.multiplicity.slice(),r=Dn(e),h=n&&null!=n.count?n.count:Kt(e,d),l=0;l<e;l++){for(o=a=0,u=I(x(q(t,e-l),h));o<d.length&&a+d[o]<=u;)a+=d[o++];t=A(t,x(q(h,a),e-l)),h=x(q(h,d[o]),e-l),d[o]--,r[l]=o}else{if(null!=v)return null;for((r=Dn(e))[e-1]=0,u=t,l=e-2;0<=l;l--)f=y(u,a=e-l),u=x(u,a),r[l]=I(f);Se(r,r)}}return r=this.DUAL(r,e,n)},permute:Me,shuffle:function(n,t){if("cyclic"!==t)return"connected"===t?Bn(n,!0):Bn(n);t=n.length,t=J.Math.rndInt(0,t-1);return 0<t&&n.push.apply(n,n.splice(0,t)),n},product:function(){return arguments.length?En(function(n,t){return Me(n,t,!0)},(n=qn(arguments[0])&&qn(arguments[0][0])?arguments[0]:G.call(arguments)).length?n[0].slice():[],n,1,n.length-1,1):null;var n},directsum:function(){return arguments.length?function(t){for(var e,r,n=t.length,i=0,u=0;u<n;u++)i+=t[u].length;return u=e=0,r=n?t[u].length:0,Dn(i,function(n){return e+r<=n&&(e+=r,r=t[++u].length),e+t[u][n-e]})}(qn(arguments[0])&&qn(arguments[0][0])?arguments[0]:G.call(arguments)):null},cycles:function(n,t){return(-1===t?Ne:Ce)(n)},toCycles:function(n){return Ce(n)},fromCycles:Ne,swaps:function(n,t){return(-1===t?Ze:Re)(n)},toSwaps:Re,fromSwaps:Ze,inversion:function(n,t){return(-1===t?Se:we)(null,n)},toInversion:function(n){return we(null,n)},fromInversion:function(n){return Se(null,n)},inverse:function(n){return Oe(null,n)},toInverse:function(n){return Oe(null,n)},multiset:function(n,t,e){return n===+n?Ie(t,n,-1===e?-1:1):-1===e?Oe(null,Wn(n,1,!1,!0)):(n=n,(r=t)&&r.length?En(function(n,t,e){return n[e]=t<r.length?r[t]:t,n},n,n):n);var r},matrix:function(n,t,e){return(-1===e?Ae:qe)(null,n,t)},toMatrix:function(n,t){return qe(null,n,t)},fromMatrix:function(n,t){return Ae(null,n,t)},parity:yn,isPermutation:function(n,t){if((t=t||n.length)!==n.length)return!1;for(var e,r=Dn(t,0,0),i=0;i<t;i++){if((e=n[i])<0||t<=e||0<r[e])return!1;r[e]++}for(i=0;i<t;i++)if(1!==r[i])return!1;return!0},isIdentity:function(n){for(var t=n.length,e=0;e<t;e++)if(n[e]!==e)return!1;return!0},isCyclic:function(n){for(var t=n.length,e=1,r=n[0];e<t;e++)if(n[e]!==(r+e)%t)return!1;return!0},isDerangement:function(n,t,e){t|=0;for(var r=0,i=n.length,u=0;u<i;u++)if(n[u]===u&&++r>t)return!1;return!0!==e||r===t},isInvolution:function(n){for(var t=n.length,e=0,r=n[e];e<t;r=n[++e])if(r<0||t<=r||n[r]!==e)return!1;return!0},isKthroot:function(n,t){if((t=t||1)<1)return!1;for(var e,r,i=n.length,u=0;u<i;u++){for(e=n[u],r=1;r<=t&&u!==e;)r++,e=n[e];if(u!==e||r!==t&&(t<=r||0<t%r))return!1}return!0},isConnected:function(n){for(var t=n.length-1,e=-1,r=0,i=n[r];r<t;i=n[++r])if(e<i&&(e=i),e<=r)return!1;return!0},isKcycle:function(n,t,e,r){if(!n.length||t<=0)return!1;r=!1!==r;for(var i,u=n.length,l=0,s=0,o=0,m=new Array(u);o<u;){if(l===(i=n[l])||1===m[i])for(!r&&l===i||s++,m[i]=1,l=0;l<u&&1===m[n[l]];)l++;else m[i]=1,l=i;o++}return"<="===e||"=<"===e?s<=t:">="===e||"=>"===e?t<=s:s===t}},output:function(n){return n&&"connected"===this.$.type&&this.n-1===n.length&&(n=Ne([[this.n-1].concat(n)],this.n)),T[F].output.call(this,n)},_update:function(){var t,e,r,n=this;return n.__item&&"connected"===n.$.type&&(r=n.n)===n.__item.length&&(t=Ce(n.__item)[0],e=t.indexOf(r-1),n.__item=Dn(r,function(n){return t[(n+e)%r]}).slice(1)),n.item__=(n.__item,n.n,n.$.order,n.$.type,null),n}}),(j=J.Combination=n(T,{constructor:function e(n,t,r){var i,u=null;if(!Nn(this,e))return new e(n,t,r);qn(n)||An(n)?(r=t||{},t=n[1]||0,n=n[0]||0):(r=r||{},n=n||0,t=t||0),r.type=String(r.type||"combination").toLowerCase(),-1<r.type.indexOf("+")&&((i=r.type.split("+")).sort(),r.type=i.join("+")),Nn(t,T)?t=(u=t).dimension():Nn(n,T)?n=(u=n).base():u=r.sub,r.base=n,r.dimension=Q.max(0,t),"binary"===r.output?r.output=function(n,t){return e.binary(n,t[0],1)}:"conjugate"===r.output&&(r.output=function(n,t){return e.complement(n,t[0])}),T.call(this,"Combination",[n,t],r,u?{method:r.submethod,iter:u,pos:r.subpos,cascade:r.subcascade}:null)},__static__:{C:T.C,P:T.P,T:T.T,DUAL:T.DUAL,count:function(n,t){t=t&&t.type?t.type:"combination";return n[0]<0||n[1]<0?J.Arithmetic.O:"ordered+repeated"===t||"variation+repeated"===t||"repeated+variation"===t?Bt(n[0],n[1]):"repeated"===t||"combination+repeated"===t?Kt(n[0]+n[1]-1,n[1]):Kt(n[0],"ordered"===t||"variation"===t?-n[1]:n[1])},initial:function(n,t,e){var r=t&&t.type?t.type:"combination",i=t&&null!=t.order?t.order:dn;return n[0]<0||n[1]<0?null:0===n[1]?[]:(e=-1===e?-1:1,(!(gn&i)&&fn&i||gn&i&&!(fn&i))&&(e=-e),e="repeated+variation"===r||"variation+repeated"===r||"ordered+repeated"===r||"combination+repeated"===r||"repeated"===r?Dn(n[1],e<0?n[0]-1:0,0):"ordered"===r||"variation"===r?e<0?Dn(n[1],n[0]-1,-1):Dn(n[1],0,1):Dn(n[1],e<0?n[0]-n[1]:0,1),e=this.DUAL(e,n,t))},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,a,f,h,d,g,_,v,b=t[1],p=t[0];if(t[0]<0||t[1]<0)return null;t=a=b-1,d=f=c=1,g=h=0,gn&i&&(f=-f,h=p-1-h,c=-c,t=a-t,d=-d,g=a-g);hn&i&&(c=-c,t=a-t,d=-d,g=a-g);fn&i&&(e=-e);if(e<0)if("ordered+repeated"===r||"variation+repeated"===r||"repeated+variation"===r){for(l=t;0<=l&&l<=a&&0===n[l];)l-=c;if(0<=l&&l<=a)for(--p,n[l]=n[l]-1,s=l+c;0<=s&&s<=a;s+=c)n[s]=p;else n=null}else if("ordered"===r||"variation"===r){for(null==u&&(u=Le(n,0,b,0,r)),l=t,o=-1;-1===o&&0<=l&&l<=a;){if(0<=f*n[l]+h-f)for(s=f*n[l]+h-f;0<=s&&s<p;s-=f)if(null==u[m=f*s+h]){o=l,u[m]=1;break}u[n[l]]=null,l-=c}if(-1<o)for(n[o]=m,m=f*(s=p-1-h)+h,l=o+c;0<=l&&l<=a;l+=c){for(;0<=s&&s<p&&null!=u[m];)m=f*(s-=f)+h;n[l]=m,u[m]=1}else n=null}else if(_=(v="repeated"===r||"combination+repeated"===r)?0:1,gn&i)if(d=-d,g=a-g,l=a-(t=a-t),s=(c=-c)<0?0:a,!v&&n[s]+1>b||v&&0<n[s]){if(v)for(;0<=l&&l<=a&&0===n[l];)l+=c;else for(;0<=l&&l<=a&&d*l+g===n[l];)l+=c;for(--n[l],l-=c;0<=l&&l<=a;)n[l]=n[l+c]-_,l-=c}else n=null;else{for(o=-1,l=t;0<=l-c&&l-c<=a;l-=c)if(n[l]>n[l-c]+_){o=l;break}if(!(0<=o&&o<=a)&&0<n[c<0?a:0]&&(o=c<0?a:0),0<=o&&o<=a){for(m=p-1+_,l=t;0<=l&&l<=a&&0<c*(l-o);l-=c)m-=_,n[l]=m;n[o]--}else n=null}else if("ordered+repeated"===r||"variation+repeated"===r||"repeated+variation"===r){for(l=t;0<=l&&l<=a&&n[l]+1===p;)l-=c;if(0<=l&&l<=a)for(n[l]=n[l]+1,s=l+c;0<=s&&s<=a;s+=c)n[s]=0;else n=null}else if("ordered"===r||"variation"===r){for(null==u&&(u=Le(n,0,b,0,r)),l=t,o=-1;-1===o&&0<=l&&l<=a;){if(f*n[l]+h+f<p)for(s=f*n[l]+h+f;0<=s&&s<p;s+=f)if(null==u[m=f*s+h]){o=l,u[m]=1;break}u[n[l]]=null,l-=c}if(-1<o)for(n[o]=m,m=f*(s=h)+h,l=o+c;0<=l&&l<=a;l+=c){for(;0<=s&&s<p&&null!=u[m];)m=f*(s+=f)+h;n[l]=m,u[m]=1}else n=null}else if(_=(v="repeated"===r||"combination+repeated"===r)?0:1,gn&i)if(c=-c,d=-d,g=a-g,l=a-(t=a-t),!v&&n[l]+b<p||v&&n[l]+1<p){for(m=d*l+g;0<=l+c&&l+c<=a&&n[l]+_===n[l+c];)n[l]=m,l+=c,m+=_;n[l]+=1}else n=null;else{if(v){for(o=-1,s=p-1,l=t;0<=l&&l<=a;l-=c)if(n[l]<s){o=l;break}}else for(o=-1,s=p-b,l=t;0<=l&&l<=a;l-=c)if(n[l]<s+d*l+g){o=l;break}if(0<=o&&o<=a){if((m=n[o]+1)===(s=v?p-1:p-b+d*o+g))n[o]=m;else if(m<s)for(l=o;0<=l&&l<=a;l+=c)n[l]=m,m+=_}else n=null}return n}(n,e,i=-1===i?-1:1,r&&r.type?r.type:"combination",r&&null!=r.order?r.order:dn,u)},rand:function(t,n){var e,r,i,u,l=n&&n.type?n.type:"combination",s=t[1],o=J.Math.rndInt;return t[0]<0||t[1]<0?null:0===s?[]:(r=(t=t[0])-s,i=t-1,"repeated"===l||"combination+repeated"===l||"ordered+repeated"===l||"variation+repeated"===l||"repeated+variation"===l?(e=1===s?[o(0,i)]:Dn(s,function(){return o(0,i)}),1<s&&("repeated"===l||"combination+repeated"===l)&&Wn(e,1,!0)):e="ordered"===l||"variation"===l?(u={},1===s?[o(0,i)]:t===s?Bn(Dn(s,0,1)):Dn(s,function(){for(var n=o(0,i);1===u[n];)n=(n+1)%t;return u[n]=1,n})):(u={},1===s?[o(0,i)]:t===s?Dn(s,0,1):r<s?_e(t,Dn(r,function(){for(var n=o(0,i);1===u[n];)n=(n+1)%t;return u[n]=1,n}),!0):Wn(Dn(s,function(){for(var n=o(0,i);1===u[n];)n=(n+1)%t;return u[n]=1,n}),1,!0)),e=this.DUAL(e,t,n))},randu:T.rand,rank:function(n,t,e){var r,i,u,l,s,o=J.Arithmetic,m=o.add,c=o.sub,a=o.mul,f=o.O,h=o.I,d=f,g=t[1],_=e&&null!=e.order?e.order:dn,v=e&&e.type?e.type:"combination";if(t[0]<0||t[1]<0)return o.J;if(0===g)return f;if(n=this.DUAL(n,t,e),"ordered+repeated"===v||"variation+repeated"===v||"repeated+variation"===v)for(l=t[0],r=0;r<g;r++)d=m(a(d,l),n[r]);else if("repeated"===v||"combination+repeated"===v){for(l=t[0]+g-1,s=e&&e.count?e.count:Kt(l,g),r=1;r<=g;r++)(u=g+1-r)<=(i=l-1-n[r-1]-r+1)&&(d=m(d,Kt(i,u)));d=c(c(s,h),d)}else if("ordered"===v||"variation"===v)for(n=we(null,n,l=t[0]),r=0;r<g;r++)d=m(a(d,l-r),n[r]);else{for(l=t[0],s=e&&e.count?e.count:Kt(l,g),r=1;r<=g;r++)(u=g+1-r)<=(i=l-1-n[r-1])&&(d=m(d,Kt(i,u)));d=c(c(s,h),d)}return(!(gn&_)&&fn&_||gn&_&&!(fn&_))&&(d=c(e&&null!=e.last?e.last:c(this.count(t,e),h),d)),d},unrank:function(n,t,e){var r,i,u,l,s,o,m,c=J.Arithmetic,a=c.O,f=c.I,h=c.sub,d=c.div,g=c.mod,_=c.mul,v=c.lte,b=c.gt,p=c.val,y=t[1],x=e&&e.type?e.type:"combination",q=e&&null!=e.order?e.order:dn;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===y)return[];if((!(gn&q)&&fn&q||gn&q&&!(fn&q))&&(n=h(e&&null!=e.last?e.last:h(this.count(t,e),c.I),n)),t=t[0],r=Dn(y),"ordered+repeated"===x||"variation+repeated"===x||"repeated+variation"===x)for(l=n,o=y-1;0<=o;o--)s=g(l,t),l=d(l,t),r[o]=p(s);else if("ordered"===x||"variation"===x){for(l=n,o=y-1;0<=o;o--)s=g(l,u=t-o),l=d(l,u),r[o]=p(s);Se(r,r,u)}else for(u=(m="repeated"===x||"combination+repeated"===x)?t+y-1:t,n=h(h(i=e&&e.count?e.count:Kt(u,y),f),n),i=d(_(i,u-y),u),s=u-y+1,l=y,o=u-1;v(i,n)?(r[y-l]=m?u-s-y+1:u-s-l+1,b(i,a)&&(n=h(n,i),i=d(_(i,l),o)),l--):(i=d(_(i,o-l),o),s--),o--,0<l;);return t=[t,y],r=this.DUAL(r,t,e)},complement:function(n,t,e){return!0===e?Bn(_e(t,n,!0)):_e(t,n)},binary:function(n,t,e){return(-1===e?be:ve)(n,t)},pick:function(n,t,e){return 0<t&&n.length?Hn(n,t,"ordered+repeated"!==e&&"variation+repeated"!==e&&"repeated+variation"!==e&&"ordered"!==e&&"variation"!==e,"ordered+repeated"===e||"variation+repeated"===e||"repeated"===e||"combination+repeated"===e,new Array(t)):[]},choose:function(t,e){return e&&e.length?Dn(e.length,function(n){return 0<=e[n]&&e[n]<t.length?t[e[n]]:null}):[]}},_update:function(){return this.item__=Le(this.__item,this.n[0],this.n[1],this.$.order,this.$.type),this}})).conjugate=j.complement,j.project=j.choose,J.Powerset=J.Subset=n(T,{constructor:function e(n,t){var r=null;if(!Nn(this,e))return new e(n,t);t=t||{},Nn(n=n||0,T)?n=(r=n).base():r=t.sub,t.type=t.type||"subset",t.rand=t.rand||{},t.base=n,t.mindimension=0,t.maxdimension=Q.max(0,n),t.dimension=t.maxdimension,"binary"===t.output&&(t.output=function(n,t){return e.binary(n,t,1)}),T.call(this,"Subset",n,t,r?{method:t.submethod,iter:r,pos:t.subpos,cascade:t.subcascade}:null)},__static__:{C:T.D,P:T.P,T:T.T,DUAL:function(n,t,e,r){if(null==n)return null;var i,u=null;return e&&"binary"===e.type&&(i=e&&null!=e.order?e.order:dn,u=e.order,e.order=hn&i?i&~hn:i|hn),n=T.DUAL.call(this,n,t,e,r),e&&null!=u&&(e.order=u),n},count:function(n,t){return n<0?J.Arithmetic.O:Vt(n)},initial:function(n,t,e){var r,i=t&&t.type?t.type:"subset",u=t&&null!=t.order?t.order:dn;return n<0?null:(e=-1===e?-1:1,(!(gn&u)&&fn&u||gn&u&&!(fn&u))&&(e=-e),r=[],0<n&&("binary"!==i||_n&u?e<0&&(r=[n-1]):e<0&&(r=Dn(n,0,1))),r=this.DUAL(r,n,t,1))},succ:function(n,t,e,r,i,u){if(null==n)return null;var l,s,o=J.Arithmetic,m=r&&r.type?r.type:"subset",c=r&&null!=r.order?r.order:dn;if(e<=0)return null;if(_n&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(fn&c&&(t=o.sub(o.sub(s,o.I),t)),t=Un(t),l=0,(n=new Array(e+1))[e]=0;l<e&&o.gt(t,o.O);)o.gt(o.band(t,1),o.O)&&(n[n[e]++]=l),l++,t=o.shr(t,1);return n=this.DUAL(n,e,r,1)}return null}return"binary"===m?T.succ.call(this,n,t,e,r,i):function(n,t,e,r){var i,u,l,s,o=t,m=t-1;if(t<=0)return null;if(u=1,gn&r)return null;hn&r&&(u=-u);fn&r&&(e=-e);s=u<0?(i=t-(n[o]||1),l=s=t-1,i):(i=0,s=n[o]-1,l=i,s);e<0?0<n[o]?0<(e=n[s])?1===n[o]||e>n[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]+0<m?+n[s]+0<m?(n[s+u]=n[s]+1,n[o]++):(n[s-u]+=1,n[o]--):n=null;return n}(n,e,-1===i?-1:1,c)},rand:function(n,t){var e,r=J.Math.rndInt;if(n<0)return null;for(var i=null,u=n-1;0<=u;u--)r(0,1)&&(i={len:i?i.len+1:1,k:u,next:i});return e=i?Dn(i.len,function(n){var t=i.k;return i=i.next,t}):[],this.DUAL(e,n,t,1)},randu:T.rand,rank:function(n,t,e){var r,i,u,l,s,o=J.Arithmetic,m=o.O,c=o.I,a=o.J,f=o.add,h=o.sub,d=e&&e.type?e.type:"subset",g=e&&null!=e.order?e.order:dn,o="binary"===d,d=gn&g&&!(hn&g)||hn&g&&!(gn&g),_=a;if(!e||!n||t<0)return a;if(t+1===(n=this.DUAL(n,t,e,-1)).length&&(n=o&&!d||d&&!o?n.slice(t-n[t],t):n.slice(0,n[t])),0===t)_=m;else if(_n&g){for(l=n.length,s={},_=m,u=0;u<l;u++){if((r=n[u])<0||t<=r||1===s[r])return a;_=f(_,Wt(t,r)),s[r]=1}_=Jn(_),fn&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<l;u++){if((r=n[u])<0||t<=r||1===s[r])return a;_=f(_,Wt(t,r)),s[r]=1}(!(gn&g)&&fn&g||gn&g&&!(fn&g))&&(_=h(e&&null!=e.last?e.last:h(this.count(t,e),c),_))}else{for(l=n.length,i=null,s={},_=m,u=0;u<l;u++){if((r=n[u])<0||t<=r||1===s[r])return a;_=f(_,zt(t,r,i)),s[r]=1,i=r}fn&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=J.Arithmetic,m=o.O,c=o.I,a=o.band,f=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:dn,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)<t)if(_n&v)for(fn&v&&(n=d(e&&null!=e.last?e.last:d(b,c),n)),n=Un(n),i=0;i<t&&h(n,m);)h(a(n,1),m)&&(r[r[t]++]=i),i++,n=f(n,1);else if("binary"===_)for((!(gn&v)&&fn&v||gn&v&&!(fn&v))&&(n=d(e&&null!=e.last?e.last:d(b,c),n)),i=0;i<t&&h(n,m);)h(a(n,1),m)&&(r[r[t]++]=i),i++,n=f(n,1);else for(fn&v&&(n=d(e&&null!=e.last?e.last:d(b,c),n)),l=null,i=0,p=m;i<t&&h(n,m);){for(p=s=zt(t,u=i,l);i+1<t&&h(n,s);)u=i,p=s,s=zt(t,++i,l);g(n,s)&&(p=s,u=i),l=r[r[t]++]=u,n=d(n,p)}return r=r.slice(0,r[t]),r=this.DUAL(r,t,e,1)},binary:function(n,t,e){return(-1===e?be:ve)(n,t)}},_update:function(){var n=this.$,t=this.n,e=this.__item,r=n.order||dn,i="binary"===n.type,n=gn&r&&!(hn&r)||hn&r&&!(gn&r);return null!=e&&t+1!==e.length&&(r=e.length,e=e.slice(),r<t&&(i&&!n||n&&!i?e.unshift:e.push).apply(e,new Array(t-r)),e.push(r),this.__item=e),this},output:function(n){if(null==n)return null;var t,e,r=this.n;return r+1===n.length&&(e=(t=this.$).order||dn,t="binary"===t.type,e=gn&e&&!(hn&e)||hn&e&&!(gn&e),n=t&&!e||e&&!t?n.slice(r-n[r],r):n.slice(0,n[r])),T[F].output.call(this,n)}}),(t=J.Partition=n(T,{constructor:function e(n,r){var t,i,u,l,s=null;if(!Nn(this,e))return new e(n,r);(r=r||{}).type=r.type||"partition",Nn(n=n||0,T)?n=(s=n).base():s=r.sub,l=null!=r["max="]?0|r["max="]:null,t=null!=r["min="]?0|r["min="]:null,u=null!=(i=null!=r["parts="]?0|r["parts="]:null)?i:null!=t&&null!=l?l===t?Q.ceil(n/t):Q.max(1,Q.ceil((n-l)/t))+1:null!=t?Q.ceil(n/t):null!=l?Q.max(0,n-l)+1:n,l=null!=i?i:null!=t&&null!=l?l===t?Q.ceil(n/l):Q.max(1,Q.ceil((n-t)/l))+1:null!=t?2:null!=l?Q.ceil(n/l):1,r.base=n,r.mindimension=Q.max(1,Q.min(l,u)),r.maxdimension=Q.max(1,Q.max(l,u)),r.dimension=r.maxdimension,r.rand=r.rand||{},"conjugate"===r.output?r.output=function(n,t){return xe(0,n,hn&r.order&&!(gn&r.order)||gn&r.order&&!(hn&r.order)?-1:1)}:"subset"===r.output?r.output=function(n,t){return e.subset(n,1)}:"packed"===r.output&&(r.output=function(n,t){return e.pack(n,1)}),T.call(this,"Partition",n,r,s?{method:r.submethod,iter:s,pos:r.subpos,cascade:r.subcascade}:null)},__static__:{C:function(n,t,e,r,i){var u="composition"===(r&&r.type?r.type:"partition"),l=r&&null!=r["max="]?0|r["max="]:null,s=r&&null!=r["min="]?0|r["min="]:null,o=-1===i;return null!=(r&&null!=r["parts="]?0|r["parts="]:null)||null!=l||null!=s||(e+1===n.length?((s=(n=xe(u,n=o?n.slice(e-n[e][0],e):n.slice(0,n[e][0]),i)).length)<e&&n[o?"unshift":"push"].apply(n,new Array(e-s)),n.push([s,0,0])):n=xe(u,n,i)),n},P:T.P,T:T.T,DUAL:function(n,t,e,r){if(null==n)return null;e&&e.type&&e.type;var i=e&&null!=e.order?e.order:dn,u=null;return gn&i&&(u=e.order,e.order=hn&i?i&~hn:i|hn),n=T.DUAL.call(this,n,t,e,r),e&&null!=u&&(e.order=u),n},count:function(n,t){var e=J.Arithmetic,r=e.O,i=t&&null!=t["max="]?0|t["max="]:null,u=t&&null!=t["min="]?0|t["min="]:null,l=t&&null!=t["parts="]?0|t["parts="]:null,t=t&&t.type?t.type:"partition";return n<0?r:0===n?!(null==l||0<l)||null!=i&&0!==i||null!=u&&0!==u?r:e.I:("composition"===t?se:ie)(n,l,i,u)},initial:function(r,n,i){var t,u,l,s,o,e=n&&n.type?n.type:"partition",m=n&&null!=n["max="]?0|n["max="]:null,c=n&&null!=n["min="]?0|n["min="]:null,a=n&&null!=n["parts="]?0|n["parts="]:null,f=n&&null!=n.order?n.order:dn,h=n&&n.dimension?n.dimension:1,e="composition"===e;if(0===r)t=!(null==a||0<a)||null!=m&&0!==m||null!=c&&0!==c?null:Dn(a||1,0,0);else{if(r<0||null!=a&&null!=m&&null!=c&&(a<=0||c<=0||m<=0||m<c||r+c<a*c+m||a*m+c<r+m)||null!=m&&null!=c&&(m<=0||c<=0||m<c||r<m||r<c||m===c&&0!=r%m||m!==c&&(r<m+c||m+c<r&&r-(m+c)<c))||null!=a&&null!=c&&(a<=0||c<=0||r<a*c)||null!=a&&null!=m&&(a<=0||m<=0||r+1<a+m||a*m<r)||null!=c&&(c<=0||r<c||c<r&&r<c+c)||null!=m&&(m<=0||r<m)||null!=a&&(a<=0||r<a))return null;if(i=-1===i?-1:1,(!(gn&f)&&fn&f||gn&f&&!(fn&f))&&(i=-i),(t=new Array(h+1))[h]=[0,0,0],a&&m&&c)if(t[h][0]=a,m===c)t=a*m===r?En(function(n,t,e){return n[e]=m,n[h][1]++,n[h][2]++,n},t,null,0,a-1,1):null;else{if(a<=1||r<c+m)return null;e?(o=r-c-m-(2<a?c*(a-2):0),t[0]=m,t[h][1]++,(t=En(function(n,t,e){return n[e]=Q.min(m,c+o),o-=n[e]-c,m===n[e]&&n[h][1]++,c===n[e]&&n[h][2]++,n},t,null,1,a-2,1))[a-1]=c,t[h][2]++,0<i&&kn(t,t,0,0,a-1)):i<0?(o=r-c-m-(2<a?c*(a-2):0),t[0]=m,t[h][1]++,(t=En(function(n,t,e){return n[e]=Q.min(m,c+o),o-=n[e]-c,m===n[e]&&n[h][1]++,c===n[e]&&n[h][2]++,n},t,null,1,a-2,1))[a-1]=c,t[h][2]++):(o=Q.max(c,Q.min(m,2<a?Q.floor((r-m-c)/(a-2)):r-m-c)),l=2<a?(r-m-c)%(a-2):0,t=En(function(n,t,e){return n[e]=0===e?m:a-1===e?c:e-1<l?o+1:o,m===n[e]&&n[h][1]++,c===n[e]&&n[h][2]++,n},t,null,0,a-1,1))}else if(m&&c)if(m===c){if(0!=r%m)return null;t[h][0]=Q.ceil(r/m),t=En(function(n,t,e){return n[e]=m,n[h][1]++,n[h][2]++,n},t,null,0,t[h][0]-1,1)}else if(i<0){if((l=Q.floor((r-c)/m))<=0)return null;0<(o=r-c-l*m)&&o<c&&(l--,o+=m-c),t[h][0]=l+1+(0<o),t=En(function(n,t,e){return e<l?(n[e]=m,n[h][1]++):e===l&&0<o?((n[e]=o)===m&&n[h][1]++,o===c&&n[h][2]++):(n[e]=c,n[h][2]++),n},t,null,0,t[h][0]-1,1)}else{if((l=Q.floor((r-m)/c))<=0)return null;o=r-m-l*c,s=Q.max(1,Q.floor(o/l)),t[h][0]=l+1,t=En(function(n,t,e){return 0===e?(n[e]=m,n[h][1]++):0<o?(n[e]=c+s,n[e]===m&&n[h][1]++,n[e]===c&&n[h][2]++,o-=s):(n[e]=c,n[h][2]++),n},t,null,0,t[h][0]-1,1),e&&kn(t,t,t[h][0],0,t[h][0]-1)}else if(a&&c){if(1===(t[h][0]=a)){if(r!==c)return null;t[0]=c,t[h][2]=1}e?(o=r-(l=a-1)*c,(t=En(function(n,t,e){return n[e]=c,n[h][2]++,n},t,null,1,a-1,1))[0]=o,c===o&&t[h][2]++,0<i&&kn(t,t,0,0,a-1)):i<0?(o=r-(l=a-1)*c,(t=En(function(n,t,e){return n[e]=c,n[h][2]++,n},t,null,1,a-1,1))[0]=o,c===o&&t[h][2]++):(o=Q.max(c,1<a?Q.floor((r-c)/(a-1)):r-c),l=1<a?(r-c)%(a-1):0,(t=En(function(n,t,e){return n[e]=e<l?o+1:o,c===n[e]&&n[h][2]++,n},t,null,0,a-2,1))[a-1]=c,t[h][2]++)}else if(a&&m){if(1===(t[h][0]=a)){if(r!==m)return null;t[0]=m,t[h][1]=1}e?(o=r,t=En(function(n,t,e){e=a-1-e;return n[e]=Q.min(m,o-e),o-=n[e],m===n[e]&&n[h][1]++,n},t,null,0,a-1,1),i<0&&kn(t,t,0,0,a-1)):t=i<0?(o=r,En(function(n,t,e){return n[e]=Q.min(m,o-(a-e-1)),m===n[e]&&n[h][1]++,o-=n[e],n},t,null,0,a-1,1)):(o=Q.min(m,1<a?Q.floor((r-m)/(a-1)):r-m),l=1<a?(r-m)%(a-1):0,En(function(n,t,e){return n[e]=0===e?m:e-1<l?o+1:o,m===n[e]&&n[h][1]++,n},t,null,0,a-1,1))}else a?(t[h][0]=a,e?(t=En(function(n,t,e){return n[e]=e+1<a?1:r-a+1,n},t,null,0,a-1,1),i<0&&kn(t,t,0,0,a-1)):(o=Q.floor(r/a),l=r%a,t=En(function(n,t,e){return n[e]=i<0?0===e?r-a+1:1:o+(e<l),n},t,null,0,a-1,1))):c?c===r?(t[h][0]=1,t[0]=r,t[h][2]=1):i<0?(t[h][0]=2,t[0]=r-c,t[1]=c,t[h][2]=1+(c===t[0]?1:0)):t=e?(l=Q.floor(r/c),0<(o=r-l*c)&&o<c?(l--,o+=c,t[h][0]=l+1):t[h][0]=l+(0<o),En(function(n,t,e){return e<l?(n[e]=c,n[h][2]++):(n[e]=o,c===o&&n[h][2]++),n},t,null,0,t[h][0]-1,1)):(l=Q.floor(r/c),o=r-l*c,u=1<l?(s=Q.floor(o/(l-1)),o%(l-1)):s=0,t[h][0]=l,En(function(n,t,e){return 0<o?(n[e]=c+s,o-=s,0<u&&(n[e]++,u--,o--),c===n[e]&&n[h][2]++):(n[e]=c,n[h][2]++),n},t,null,0,t[h][0]-1,1)):t=m?(l=Q.floor(r/m),o=r%m,e?En(function(n,t,e){return n[e]=t,n[h][0]++,m===n[e]&&n[h][1]++,n},t,i<0?Dn(l,m,0).concat(o?[o]:[]):Dn(r-m,1,0).concat([m])):En(function(n,t,e){return n[e]=t,n[h][0]++,m===n[e]&&n[h][1]++,n},t,i<0?Dn(l,m,0).concat(o?[o]:[]):[m].concat(Dn(r-m,1,0)))):En(function(n,t,e){return n[e]=t,n[h][0]++,n},t,i<0?[r]:Dn(r,1,0));t=t&&t.slice(0,t[h][0])}return t=this.DUAL(t,r,n,1)},succ:function(n,t,e,r,i,u){if(null==e||null==n)return null;var l=r&&r.type?r.type:"partition",s=r&&null!=r["max="]?0|r["max="]:null,o=r&&null!=r["min="]?0|r["min="]:null,m=r&&null!=r["parts="]?0|r["parts="]:null,c=r&&r.dimension?r.dimension:1,r=r&&null!=r.order?r.order:dn;return e<=0||null!=m&&null!=s&&null!=o&&(m<=0||o<=0||s<=0||s<o||e+o<m*o+s||m*s+o<e+s)||null!=s&&null!=o&&(s<=0||o<=0||s<o||e<s||e<o||s===o&&0!=e%s||s!==o&&(e<s+o||s+o<e&&e-(s+o)<o))||null!=m&&null!=o&&(m<=0||o<=0||e<m*o)||null!=m&&null!=s&&(m<=0||s<=0||e+1<m+s||m*s<e)||null!=o&&(o<=0||e<o||o<e&&e<o+o)||null!=s&&(s<=0||e<s)||null!=m&&(m<=0||e<m)?null:("composition"===l?function(n,t,e,r,i,u,l,s){var o,m,c,a,f,h,d,g,_,v,b,p=t,y=l,x=1;if(p<=0||null!=r&&r<=0||null!=u&&u<=0||null!=i&&i<=0)return null;hn&s&&(x=-x);fn&s&&(e=-e);t=x<0?(v=l-(n[y][0]||1),c=b=l-1,v):(v=0,b=n[y][0]-1,c=v,b);if(e<0)if(r)if(i&&u){if(i===u)return null;if(gn&s)n=null;else{for(o=t-x,d=n[m=t]-u,_=n[t],a=1;v<=o&&o<=b&&(u===n[o]||i<n[m]+1);)_+=n[o],a++,m=o,o-=x;if(o<v||b<o)n=null;else if(0<d)for(f=_+1-u*(a-1),1===n[y][2]&&u===n[m]&&(a-1)*i+u<_+1?(_+=n[o]-u,n[o]=u,n[y][2]++):(1===n[y][1]&&i===n[o]&&f<i?(n[o]=Q.max(n[m],n[t]),_+=i-n[o],i!==n[o]&&n[y][1]--):(i===n[o]&&n[y][1]--,_++,n[o]--),u===n[o]&&n[y][2]++),f=_-u*a;0<_&&v<=m&&m<=b;)u===n[m]&&n[y][2]--,i===n[m]&&n[y][1]--,n[m]=Q.min(i,u+f),_-=n[m],f-=n[m]-u,i===n[m]&&n[y][1]++,u===n[m]&&n[y][2]++,m+=x;else 1===n[y][2]&&u===n[m]?(n[m]=n[o],n[o]=u):1===n[y][1]&&i===n[o]&&i>n[m]+1?(n[o]=n[m],n[m]=i):(i===n[o]&&n[y][1]--,u===n[m]&&n[y][2]--,n[o]--,n[m]++,i===n[m]&&n[y][1]++,u===n[o]&&n[y][2]++)}}else if(u)if(gn&s)n=null;else if((f=n[t])<p-u*(r-1)){for(o=t-x;v<=o&&o<=b&&u===n[o];)o-=x;m=o+x,1===n[y][2]&&u===n[m]&&m===t?(n[m]=n[o],n[o]=u):(u===n[m]&&n[y][2]--,n[o]--,n[t]=u,n[m]=1+f,u===n[o]&&n[y][2]++,n[t]===u&&u!==f&&n[y][2]++)}else n=null;else if(i)if(gn&s)n=null;else{for(o=t-x,d=n[m=t]-1,_=n[t],a=1;v<=o&&o<=b&&(1===n[o]||i<n[m]+1);)_+=n[o],a++,m=o,o-=x;if(o<v||b<o)n=null;else if(0<d)for(1===n[y][1]&&i===n[o]&&_-(a-1)+1<i?(n[o]=Q.max(n[m],n[t]),_+=i-n[o],i!==n[o]&&n[y][1]--):(i===n[o]&&n[y][1]--,n[o]--,_++),g=0;0<_&&v<=m&&m<=b;)i===n[m]&&n[y][1]--,n[m]=Q.min(i,_-(a-g-1)),_-=n[m],i===n[m]&&n[y][1]++,m+=x,g++;else 1===n[y][1]&&i===n[o]&&i>n[m]+1?(n[o]=n[m],n[m]=i):(i===n[o]&&n[y][1]--,n[o]--,n[m]++,i===n[m]&&n[y][1]++)}else if(gn&s)if((f=n[c])<p-r+1){for(n[c]=1,o=c+x;v<=o&&o<=b&&1===n[o];)o+=x;n[o]--,v<=o-x&&o-x<=b&&(n[o-x]=1+f)}else n=null;else if((f=n[t])<p-r+1){for(n[t]=1,o=t;v<=o&&o<=b&&1===n[o];)o-=x;n[o]--,v<=o+x&&o+x<=b&&(n[o+x]=1+f)}else n=null;else if(gn&s)n=null;else{if(i&&u)return null;if(u)return null;if(i){for(_=0,o=t,a=n[y][0],g=0;v<=o&&o<=b&&1===n[o];)i===n[o]&&g++,o-=x,_++,a--;if(o<v||b<o)n=null;else if(1===n[y][1]&&i===n[o])if(p===i)n=null;else if(i<=_+1)for(i===n[o]&&n[y][1]--,n[o]--,_++,n[y][0]=a,n[y][1]-=g;0<_;)n[o+=x]=Q.min(i,_),n[y][0]++,i===n[o]&&n[y][1]++,_-=n[o];else if(i<n[o]+_)for(i===n[o]&&n[y][1]--,n[o]-=i-_,_=i,n[y][0]=a,n[y][1]-=g;0<_;)n[o+=x]=Q.min(i,_),n[y][0]++,i===n[o]&&n[y][1]++,_-=n[o];else{for(i===n[o]&&g++,_+=n[o],o-=x,a--;v<=o&&o<=b&&1===n[o];)i===n[o]&&g++,o-=x,_++,a--;if(o<v||b<o)n=null;else for(i===n[o]&&n[y][1]--,n[o]--,_++,n[y][0]=a,n[y][1]-=g;0<_;)n[o+=x]=Q.min(i,_),n[y][0]++,i===n[o]&&n[y][1]++,_-=n[o]}else for(i===n[o]&&n[y][1]--,n[o]--,_++,n[y][0]=a,n[y][1]-=g;0<_;)n[o+=x]=Q.min(i,_),n[y][0]++,i===n[o]&&n[y][1]++,_-=n[o]}else if(p>n[y][0]){for(o=t,_=0;v<=o&&o<=b&&1===n[o];)o-=x,_++;if(f=n[o]-1,n[o]=f,0<++_)if(v<=o+x&&o+x<=b)n[o+=x]=_,_=0,n[y][0]=x<0?l-o:o+1;else for(;0<_--;)n[o+=x]=1,n[y][0]++}else n=null}else if(r)if(gn&s)n=null;else if(i&&u){if(i===u)return null;for(a=1,o=(m=t)-x,d=i-n[m],_=n[m];v<=o&&o<=b&&(i<n[o]+1||u===n[m]);)_+=n[o],a++,m=o,o-=x;if(o<v||b<o)n=null;else if(0<d)for(f=_-1-u*(a-1),1===n[y][2]&&u===n[o]&&a<=f?(n[o]=n[t],n[t]=u,_-=n[o]-u):1===n[y][1]&&i===n[m]&&i>n[o]+1&&f<i?(n[m]=n[o],n[o]=i,_-=i-n[m]):(u===n[o]&&n[y][2]--,n[o]++,_--,i===n[o]&&n[y][1]++),o=t,f=_-u*a;v<=o&&o<=b&&0<_;)i===n[o]&&n[y][1]--,u===n[o]&&n[y][2]--,n[o]=Q.min(i,u+f),_-=n[o],f-=n[o]-u,i===n[o]&&n[y][1]++,u===n[o]&&n[y][2]++,o-=x,g++;else 1===n[y][1]&&i===n[m]&&i>n[o]+1?(n[m]=n[o],n[o]=i):(i===n[m]&&n[y][1]--,u===n[o]&&n[y][2]--,n[o]++,n[m]--,u===n[m]&&n[y][2]++,i===n[o]&&n[y][1]++)}else if(u)if(p-u*(r-1)>n[c]){for(o=t;v<=o&&o<=b&&u===n[o];)o-=x;m=o-x,1===n[y][2]&&u===n[m]?(n[m]=n[o],n[o]=u):(u===n[m]&&n[y][2]--,n[o]--,n[m]++,u===n[o]&&n[y][2]++,f=n[o],n[o]=n[t],n[t]=f)}else n=null;else if(i){for(a=1,o=(m=t)-x,d=i-n[m],_=n[m];v<=o&&o<=b&&(i&&i<n[o]+1||1===n[m]);)_+=n[o],a++,m=o,o-=x;if(o<v||b<o)n=null;else if(0<d)for(i&&1===n[y][1]&&i===n[m]&&i>n[o]+1&&_-(a-1)-1<i?(n[m]=n[o],n[o]=i,_-=i-n[m]):(n[o]++,_--,i===n[o]&&n[y][1]++),g=0,o=t;v<=o&&o<=b&&0<_;)i===n[o]&&n[y][1]--,n[o]=Q.min(i,_-(a-g-1)),_-=n[o],i===n[o]&&n[y][1]++,o-=x,g++;else 1===n[y][1]&&i===n[m]&&i>n[o]+1?(n[m]=n[o],n[o]=i):(i===n[m]&&n[y][1]--,n[o]++,n[m]--,i===n[o]&&n[y][1]++)}else if(gn&s)if(p-r+1>n[t]){for(o=c;v<=o&&o<=b&&1===n[o];)o+=x;f=n[o],n[o]=1,n[c]=f-1,v<=o+x&&o+x<=b&&n[o+x]++}else n=null;else if(p-r+1>n[c]){for(o=t;v<=o&&o<=b&&1===n[o];)o-=x;f=n[o],n[o]=1,n[t]=f-1,v<=o-x&&o-x<=b&&n[o-x]++}else n=null;else if(gn&s)n=null;else if(i){if(i===u)return null;for(h=u||1,_=n[o=t],i===n[o]&&n[y][1]--,u&&u===n[o]&&n[y][2]--,n[y][0]--,o-=x;null!=u&&v<=o&&o<=b&&_<1+u;)_+=n[o],n[y][0]--,i===n[o]&&n[y][1]--,u===n[o]&&n[y][2]--,o-=x;if(o<v||b<o)return null;if(a=n[y][0],0===n[y][1]){if(p===i)return null;for(_-=i-n[m=o],n[o]=i,n[y][1]++;h<=_;)n[o+=x]=h,_-=h,n[y][0]++,u&&n[y][2]++,i===n[o]&&n[y][1]++;null!=u&&0===n[y][2]&&(_+=n[o]-u,n[o]=u,n[y][2]++)}else{for(f=g=0;v<=o&&o<=b&&i===n[o];)g++,f+=n[o],o-=x,a--;if(o<v||b<o)return null;for(n[m=o]++,_+=f-1,n[y][0]=a,n[y][1]-=g,i===n[o]&&n[y][1]++,0===n[y][1]?_-=f=i:f=0;h<=_;)n[o+=x]=h,_-=h,n[y][0]++,u&&n[y][2]++,i===n[o]&&n[y][1]++;if(u&&0===n[y][2]&&(_+=n[o]-u,n[o]=u,n[y][2]++),0<f&&(n[o+=x]=i,n[y][0]++,n[y][1]++),0<_){for(;v<=o&&o<=b&&0<_;)(f=n[o])<i&&(u&&u===f?1===n[y][2]?(n[o]=n[o+x],n[o+x]=f):(n[y][2]--,n[o]=Q.min(i,f+_),_-=n[o]-f,i===n[o]&&n[y][1]++):(n[o]=Q.min(i,f+_),_-=n[o]-f,i===n[o]&&n[y][1]++)),o-=x;if(0<_)return null}}}else if((f=u?p-(h=u):(h=1,p))>n[c]){for(_=n[o=t],n[y][0]--,u&&u===n[o]&&n[y][2]--,o-=x,u&&u===n[o]&&n[y][2]--,n[o]++,_--;h<=_;)n[o+=x]=h,_-=h,n[y][0]++,u&&n[y][2]++;if(u&&0===n[y][2]&&(_+=n[o]-u,n[o]=u,n[y][2]++),0<_){if(u&&1===n[y][2]&&u===n[o])if(u<_){for(_+=n[o],n[y][0]--,n[y][2]--,n[o-=x]++,_--;h<=_;)n[o+=x]=h,_-=h,n[y][0]++,n[y][2]++;0<_&&(u===n[o]&&n[y][2]--,n[o]+=_)}else n[o-x]+=_;else u&&u===n[o]&&n[y][2]--,n[o]+=_;_=0}}else n=null;return n}:function(n,t,e,r,i,u,l,s){var o,m,c,a,f,h,d,g,_,v,b,p,y=t,x=l,q=1;if(y<=0||null!=r&&r<=0||null!=u&&u<=0||null!=i&&i<=0)return null;hn&s&&(q=-q);fn&s&&(e=-e);t=q<0?(b=l-(n[x][0]||1),c=p=l-1,b):(b=0,p=n[x][0]-1,c=b,p);if(gn&s)return null;if(e<0)if(r){if(i&&u&&i===u)return null;for(h=u||1,v=y-(i||0)-(u||0),f=0<r-(g=i?1:0)-(_=u?1:0)?v%(r-g-_):0,d=Q.min(i||v,0<r-g-_?Q.floor(v/(r-g-_)):v),a=0,o=-1,m=c+g*q;b<=m-g*q&&m+_*q<=p;m+=q)h<n[m]&&(d+(a<f)<n[m]||Q.floor(v/(r-g-_-a))+(0<v%(r-g-_-a))<n[m])&&(o=m),a++,v-=n[m];if(-1===o||p<o+_*q||o-g*q<b)n=null;else{for(i===n[o]&&n[x][1]--,n[o]--,u===n[o]&&n[x][2]++,v=1,a=0,m=o+=q;b<=m-g*q&&m+_*q<=p;)a++,v+=n[m],m+=q;for(;0<a&&0<v&&b<=o-g*q&&o+_*q<=p;)a--,i===n[o]&&n[x][1]--,u===n[o]&&n[x][2]--,n[o]=Q.min(b<=o-q&&o-q<=p?n[o-q]:y,Q.max(h,v-h*a)),v-=n[o],i===n[o]&&n[x][1]++,u===n[o]&&n[x][2]++,o+=q}}else if(u?(h=u,t-=q):h=1,b<=(m=i?c+q:c)&&m<=p&&n[m]>h){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[x][1]--,f=n[o]-1,v++,n[o]=f,n[x][0]=(q<0?l-o:o+1)+(u?1:0),n[x][1]-=g,n[x][2]-=_,u===n[o]&&n[x][2]++,f<v){for(m=v%f,v=Q.floor(v/f);0<v--;)n[o+=q]=f,n[x][0]++,i===n[o]&&n[x][1]++,u===n[o]&&n[x][2]++;v=m}if(h<=v&&(n[o+=q]=v,v=0,n[x][0]++,i===n[o]&&n[x][1]++,u===n[o]&&n[x][2]++),0<v)return null;u&&(n[o+=q]=u)}else n=null;else if(r){if(i&&u&&i===u)return null;for(o=u?(h=u,t-q):(h=1,t),a=v=0;b<=o&&o<=p&&h===n[o];)v+=n[o],a++,o-=q;if(o<b||p<o)n=null;else if(i===n[o]&&n[x][1]--,u===n[o]-1&&n[x][2]++,n[o]--,v+=n[o],a++,(o-=q)<b||p<o)n=null;else{for(;b<=o&&o<=p&&(i&&i<n[o]+1||b<=o-q&&o-q<=p&&n[o-q]<n[o]+1);)v+=n[o],a++,o-=q;if(o<b||p<o)n=null;else{for(n[o]++,i===n[o]&&n[x][1]++,f=0<a?v%a:0,d=0<a?Q.floor(v/a):v,m=0;0<v;)i===n[o+=q]&&n[x][1]--,u===n[o]&&n[x][2]--,n[o]=d+(m<f),v-=n[o],i===n[o]&&n[x][1]++,u===n[o]&&n[x][2]++,m++;u&&(n[t]=u)}}}else{if(i&&u){if(i===u)return null;h=u,a=Q.floor((y-u)/i)+1,f=n[x][0]>a,m=c+q,t-=q}else u?(h=u,f=2<n[x][0]||n[c]+u<y,m=c,t-=q):m=i?(h=1,f=Q.min(i,y-i),a=Q.ceil(y/i)-1,f=n[x][0]>a+1||n[c+(a-1)*q]<f,c+q):(h=1,f=n[c]<y,c);if(b<=m&&m<=p&&f){for((v=_=g=0)<p?(o=t-q,v+=n[t],i===n[t]&&g++,u===n[t]&&_++):o=t;b<=o&&o<=p&&b<=o-q&&o-q<=p&&0<q*(o-m)&&n[o-q]===n[o];)v+=n[o],i===n[o]&&g++,u===n[o]&&_++,o-=q;if(i&&i<=n[o])return null;for(n[x][0]=(q<0?l-o:o+1)+(u?1:0),n[x][1]-=g,n[x][2]-=_,u===n[o]&&n[x][2]--,n[o]++,v--,i===n[o]&&n[x][1]++,f=v%h;h<=v;)o+=q,n[x][0]++,n[o]=h+(0<f),v-=n[o],f--,i===n[o]&&n[x][1]++,u===n[o]&&n[x][2]++;if(0<v)for(t=q<0?l-n[x][0]:n[x][0]-1,o=u?t-q:t;0<v;)i===n[o]&&n[x][1]--,u===n[o]&&n[x][2]--,f=Q.min(v,o===m?v:n[o-q]===n[o]?q*(o-m)+1<=v?1:0:n[o-q]-n[o]),n[o]+=f,v-=f,i===n[o]&&n[x][1]++,u===n[o]&&n[x][2]++,o-=q;u&&(t=q<0?l-n[x][0]:n[x][0]-1,n[t]=u)}else n=null}return n})(n,e,i=-1===i?-1:1,m,s,o,c,r)},rand:function(n,t){var e=J.Arithmetic,r=(t&&t.type&&t.type,t&&null!=t.order&&t.order,t&&null!=t["max="]?0|t["max="]:null),i=t&&null!=t["min="]?0|t["min="]:null,u=t&&null!=t["parts="]?0|t["parts="]:null,l=(t&&t.dimension&&t.dimension,e.O),s=e.I,o=null;if(0===n)o=!(null==u||0<u)||null!=r&&0!==r||null!=i&&0!==i?null:Dn(u||1,0,0);else{if(n<0||null!=u&&null!=r&&null!=i&&(u<=0||i<=0||r<=0||r<i||n+i<u*i+r||u*r+i<n+r)||null!=r&&null!=i&&(r<=0||i<=0||r<i||n<r||n<i||r===i&&0!=n%r||r!==i&&(n<r+i||r+i<n&&n-(r+i)<i))||null!=u&&null!=i&&(u<=0||i<=0||n<u*i)||null!=u&&null!=r&&(u<=0||r<=0||n+1<u+r||u*r<n)||null!=i&&(i<=0||n<i||i<n&&n<i+i)||null!=r&&(r<=0||n<r)||null!=u&&(u<=0||n<u))return null;u=t&&null!=t.count?t.count:this.count(n,t),e.gt(u,l)&&(u=e.sub(u,s),s=e.rnd(l,u),o=e.equ(l,s)?this.initial(n,t,1):e.equ(u,s)?this.initial(n,t,-1):this.unrank(s,n,t))}return this.DUAL(o,n,t,1)},randu:T.rand,rank:function(n,t,e){var r,i,u,l,s,o=J.Arithmetic,m=e&&e.type?e.type:"partition",c=e&&null!=e.order?e.order:dn,a=e&&null!=e["max="]?0|e["max="]:null,f=e&&null!=e["min="]?0|e["min="]:null,h=e&&null!=e["parts="]?0|e["parts="]:null,d=e&&e.dimension?e.dimension:1,g=o.J,_=o.O;if(n&&0===t)d+1===n.length&&(n=hn&c?n.slice(d-n[d][0],d):n.slice(0,n[d][0])),n=this.DUAL(n.slice(),t,e,-1),r=!(null==h||0<h)||null!=a&&0!==a||null!=f&&0!==f||(h||1)!==n.length||n.length!==n.filter(function(n){return 0===n}).length?g:_;else{if(!n||!n.length||t<0||null!=h&&null!=a&&null!=f&&(h<=0||f<=0||a<=0||a<f||t+f<h*f+a||h*a+f<t+a)||null!=a&&null!=f&&(a<=0||f<=0||a<f||t<a||t<f||a===f&&0!=t%a||a!==f&&(t<a+f||a+f<t&&t-(a+f)<f))||null!=h&&null!=f&&(h<=0||f<=0||t<h*f)||null!=h&&null!=a&&(h<=0||a<=0||t+1<h+a||h*a<t)||null!=f&&(f<=0||t<f||f<t&&t<f+f)||null!=a&&(a<=0||t<a)||null!=h&&(h<=0||t<h))return g;if(d+1===n.length&&(n=hn&c?n.slice(d-n[d][0],d):n.slice(0,n[d][0])),n=this.DUAL(n.slice(),t,e,-1),e=e&&null!=e.count?e.count:this.count(t,e),e=o.sub(e,1),"composition"===m){if(r=_,f&&a===f)return null==h||Q.floor(t/a)===h?_:g;for(i=s=l=0;0<t&&i<n.length;i++){if((u=n[i])<=0||t<u||f&&u<f||a&&a<u)return g;r=o.add(r,f===u?_:le(t,u,f,a,h?h-i:null,l,s)),f===u&&l++,a===u&&s++,t-=u}if(0!==t)return g;fn&c&&(r=o.sub(e,r))}else{if(r=e,f){if(a===f)return null==h||Q.floor(t/a)===h?_:g;t-=f,h&&h--}for(i=0;0<t&&i<n.length;i++){if((u=n[i])<=0||t<u||f&&u<f||a&&a<u)return g;f&&i+1===n.length||(r=o.sub(r,a&&0===i?_:re(t,u,f,a,h?h-i:null)),t-=u)}if(0!==t)return g;fn&c||(r=o.sub(e,r))}}return r},unrank:function(n,t,e){var r,i,u,l,s,o,m=J.Arithmetic,c=e&&e.type?e.type:"partition",a=e&&null!=e.order?e.order:dn,f=e&&null!=e["max="]?0|e["max="]:null,h=e&&null!=e["min="]?0|e["min="]:null,d=e&&null!=e["parts="]?0|e["parts="]:null,g=[],_=m.O;e&&e.dimension&&e.dimension;if(n=null==n?null:m.num(n),o=e&&null!=e.count?e.count:this.count(t,e),o=m.sub(o,1),0===t&&null!=n)g=!m.equ(_,n)||!(null==d||0<d)||null!=f&&0!==f||null!=h&&0!==h?null:Dn(d||1,0,0);else{if(null==n||m.lt(n,_)||m.gt(n,o)||t<0||null!=d&&null!=f&&null!=h&&(d<=0||h<=0||f<=0||f<h||t+h<d*h+f||d*f+h<t+f)||null!=f&&null!=h&&(f<=0||h<=0||f<h||t<f||t<h||f===h&&0!=t%f||f!==h&&(t<f+h||f+h<t&&t-(f+h)<h))||null!=d&&null!=h&&(d<=0||h<=0||t<d*h)||null!=d&&null!=f&&(d<=0||f<=0||t+1<d+f||d*f<t)||null!=h&&(h<=0||t<h||h<t&&t<h+h)||null!=f&&(f<=0||t<f)||null!=d&&(d<=0||t<d))return null;if(fn&a&&(n=m.sub(o,n)),"composition"===c){if(h&&f===h&&(g=null==d||Q.floor(t/f)===d?Dn(Q.floor(t/f),f):null),g&&!g.length)for(r=l=u=0;0<t;r++){for(i=h&&0===r?t-h:t,i=f?Q.min(f,i):i;(!h||h<=i)&&1<=i&&m.gt(s=le(t,i,h,f,d?d-r:null,u,l),n);)i--;if(i<=0||h&&i<h)break;h===i&&u++,f===i&&l++,g.push(i),n=m.sub(n,s),t-=i}}else if(h&&(f===h?g=null==d||Q.floor(t/f)===d?Dn(Q.floor(t/f),f):null:(t-=h,d&&d--)),f&&(t-=f,d&&d--),g&&!g.length){for(r=0;0<t;r++){for(i=f?Q.min(f,t):t;(!h||h<=i)&&1<=i&&m.gt(s=re(t,i,h,f,d?d-r:null),n);)i--;if(i<=0||h&&i<h)break;g.push(i),n=m.sub(n,s),t-=i}h&&g.push(h),f&&g.unshift(f)}}return g=this.DUAL(g,t,e,1)},conjugate:function(n,t){return xe("composition"===t,n)},subset:function(n,t){return(-1===t?ye:pe)(n)},pack:function(n,t){return(-1===t?function(n,t){if(null==n)return null;var e,r,i,u,l,s=[],o=n.length,m=1,c=0,a="push";for(-1===t&&(m=-m,c=o-1-c,a="unshift"),e=0;e<o;e++)if(1===(l=n[m*e+c])[1])s[a](l[0]);else for(i=l[1],u=l[0],r=0;r<i;r++)s[a](u);return s}:function(n,t){if(null==n)return null;var e,r,i,u,l=[],s=n.length,o=1,m=0,c="push";for(-1===t&&(o=-o,m=s-1-m,c="unshift"),u=[i=n[m],1],e=1;e<s;e++)i===n[r=o*e+m]?u[1]++:(l[c](u),u=[i=n[r],1]);return l[c](u),l})(n)}},_update:function(){var n,t,e=this.$,r=(this.n,this.__item),i=(e&&e.type&&e.type,e&&null!=e.order?e.order:dn),u=e&&null!=e["max="]?0|e["max="]:null,l=e&&null!=e["min="]?0|e["min="]:null,e=(e&&null!=e["parts="]&&e["parts="],e.dimension),s=0,o=0;if(null!=r&&e+1!==r.length){if(n=r.length,r=r.slice(),null!=u||null!=l)for(o=s=t=0;t<n;t++)u===r[t]&&s++,l===r[t]&&o++;n<e&&(hn&i?r.unshift:r.push).apply(r,new Array(e-n)),r.push([n,s,o]),this.__item=r}return this},output:function(n){if(null==n)return null;var t=this.$,e=(this.n,null!=t["max="]&&t["max="],null!=t["min="]&&t["min="],null!=t["parts="]&&t["parts="],null!=t.order?t.order:dn),t=t.dimension;return t+1===n.length&&(n=hn&e?n.slice(t-n[t][0],t):n.slice(0,n[t][0])),T[F].output.call(this,n)}})).transpose=t.conjugate,J.SetPartition=n(T,{constructor:function n(t,e){var r,i=null;if(!Nn(this,n))return new n(t,e);(e=e||{}).type="partition",Nn(t=t||0,T)?t=(i=t).base():i=e.sub,r=null!=e["parts="]?0|e["parts="]:null,e.base=t,e.mindimension=Q.max(0,null!=r?r:1),e.maxdimension=Q.max(0,null!=r?r:t),e.dimension=e.maxdimension,e.rand=e.rand||{},e.rand.partition=1,T.call(this,"SetPartition",t,e,i?{method:e.submethod,iter:i,pos:e.subpos,cascade:e.subcascade}:null)},__static__:{C:T.C,P:T.P,T:T.T,DUAL:function(n,t,e,r){return n},count:function(n,t){t=t&&null!=t["parts="]?0|t["parts="]:null;return 0<n?null==t?me(n):t<=0?J.Arithmetic.O:te(n,t,2):J.Arithmetic.O},initial:function(r,n,i){var t=n&&null!=n.order?n.order:dn,u=n&&null!=n["parts="]?0|n["parts="]:null;return r<0||null!=u&&(u<=0||r<u)?null:(i=-1===i?-1:1,fn&t&&(i=-i),(t=new Array(r+1))[r]=[r,new Array(r)],t=u?(t[r].push(Dn(u,0)),En(function(n,t,e){return t=i<0?e<=r-u?0:u-r+e:e<u?e:u-1,n[e]=t,n[r][1][e]=t,n[r][2][t]++,n},t,null,0,r-1,1)):En(function(n,t,e){return i<0?(n[e]=0,n[r][1][e]=0):(n[e]=e,n[r][1][e]=e),n},t,null,0,r-1,1))},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,a;if(t<=0||null!=e&&(e<=0||t<e))return null;if(!(dn&i))return null;fn&i&&(r=-r);if(m=n[t][1],c=!1,e){if(1===e||t===e)return null;if(a=n[t][2],r<0){for(u=t-1;0<u;u--)if(n[u]<=m[u-1]&&n[u]!==(u<e?u:e-1)){for(a[n[u]]--,n[u]=Q.min(e-1,n[u]+1),m[u]=Q.max(n[u],m[u]),a[n[u]]++,l=u+1;l<t;l++)a[n[l]]--,n[l]=n[0],a[n[l]]++,m[l]=m[u];for(o=t-1,s=e-1;0<s;s--)a[s]||(a[n[o]]--,a[s]++,n[o]=s,o--);c=!0;break}c||(n=null)}else{for(u=t-1;0<u;u--)if(n[u]>n[0]&&(e-t+u<n[u]||1<a[n[u]])){for(a[n[u]]--,n[u]--,m[u]=m[u-1],a[n[u]]++,l=u+1;l<t;l++)1<a[n[l]]&&(a[n[l]]--,m[l]=Q.min(e-1,m[u]+l-u),n[l]=m[l],a[n[l]]++);c=!0;break}c||(n=null)}}else if(r<0){for(u=t-1;0<u;u--)if(n[u]<=m[u-1]){for(n[u]++,m[u]=Q.max(n[u],m[u]),l=u+1;l<t;l++)n[l]=n[0],m[l]=m[u];c=!0;break}c||(n=null)}else{for(u=t-1;0<u;u--)if(n[u]>n[0]){for(n[u]--,m[u]=m[u-1],l=u+1;l<t;l++)m[l]=m[u]+l-u,n[l]=m[l];c=!0;break}c||(n=null)}return n}(n,e,r&&null!=r["parts="]?0|r["parts="]:null,i,r&&null!=r.order?r.order:dn))},rand:function(n,t){var e,r,i,u,l,s,o,m=t&&null!=t["parts="]?0|t["parts="]:null,c=J.Math.rnd,a=J.Arithmetic;if(n<0||null!=m&&(m<=0||n<m))return null;for(e=Dn(n,0),r=n,i=0;0<r;){for(o=p.Zero(),s=p.fromDec(c()),l=1;l<=r&&!(o=o.add(p(a.mul(Kt(r-1,l-1),this.count(r-l,{"parts=":m})),this.count(r,{"parts=":m})))).gte(s);)l++;for(u=r-l;u<r;u++)e[u]=i,m&&(i=(i+1)%m);i++,m&&m<=i&&(i=0),r-=l}return e=Bn(e),En(function(n,t){return n[e[t]].push(t),n},Dn(Q.max.apply(null,e)+1,function(){return[]}),null,0,n-1,1).sort(function(n,t){return n[0]-t[0]})},randu:T.rand,rank:yn,unrank:yn,conjugate:function(n,t){return null==n?null:conjugate}},output:function(e){if(null==e)return null;var n=this.$,t=this.n,r=null!=n.order?n.order:dn,r=(n&&null!=n["parts="]&&n["parts="],hn&r);return e&&t+1===e.length&&(e=En(function(n,t){return n[e[t]].push(t),n},Dn(Q.max.apply(null,e.slice(0,t))+1,function(){return[]}),null,0,t-1,1),r&&(e=e.reverse())),T[F].output.call(this,e)}}),J.CatalanWord=n(T,{constructor:function n(t,e){var r=null;if(!Nn(this,n))return new n(t,e);(e=e||{}).type="catalan",Nn(t=t||0,T)?t=(r=t).base():r=e.sub,e.base=t,e.dimension=Q.max(0,2*t),e.rand=e.rand||{},e.rand.catalan=1,e.symbols=e.symbols||["(",")"],On(e.symbols)&&(e.symbols=e.symbols.split("")),T.call(this,"CatalanWord",t,e,r?{method:e.submethod,iter:r,pos:e.subpos,cascade:e.subcascade}:null)},__static__:{C:T.C,P:T.P,T:T.T,DUAL:function(n,t,e,r){return n},count:function(n,t){return n<0?J.Arithmetic.O:oe(n)},initial:function(n,t,e){t=t&&null!=t.order?t.order:dn;return n<0?null:(e=-1===e?-1:1,fn&t&&(e=-e),Dn(n,function(n){return e<0?2*n:n}))},succ:function(n,t,e,r,i){return null==e||null==n||e<=0?null:function(n,t,e,r){var i,u,l,s,o,m,c,a=t<<1;if(t<=1)return null;fn&r&&(e=-e);if(e<0)if(gn&r){for(u=0;u<t&&n[u]===u;)++u;if(t<=u)n=null;else if(0<u&&2==n[u]-n[u-1])--n[u];else{for(i=--n[u],--u,--i;0<u&&u<2*i;--i,--u)n[u]=i;for(;0<i;--i)n[i]=2*i;n[0]=0}}else for(s=a,l=n[u=t-1],m=0<u?n[u-1]:1,c=l-m;;){if(1!==c){if(u<=0){n=null;break}n[u]=l-1;break}s-=2,n[u]=s,l=m,m=0<--u?n[u-1]:1,c=l-m}else if(gn&r){if(u=0,2===n[1]){for(u=2;u<t&&n[u]===2*u;)++u;t<=u&&(n=null)}if(n){for(;u+1<t&&1==n[u+1]-n[u];)++u;for(++n[u],i=0;i<u;++i)n[i]=i}}else if((l=n[u=t-1])<(s=a-2))n[u]=l+1;else{for(;s-=2,0<=--u&&s===n[u];);if(u<0)n=null;else for(o=n[u],i=u;n[i++]=++o,i<t;);}return n}(n,e,i=-1===i?-1:1,r&&null!=r.order?r.order:dn)},rand:function(t,n){var e,r,i,u,l,s,o,m;if(t<0)return null;for(e=Bn(Dn(m=2*t,function(n){return n<t?1:-1})),r=[],i=[],u=[],s=l=0;s<m;s++)o=e[s],u.push(o),0===(l+=o)&&(-1===o?r=r.concat(u):(r.push(1),i=[-1].concat(u.slice(1,-1).map(function(n){return-n})).concat(i)),u=[]);return r.concat(i).reduce(function(n,t,e){return 0<t&&n.push(e),n},[])},randu:T.rand,rank:yn,unrank:yn},output:function(t){if(null==t)return null;var n=this.$,e=this.n,r=null!=n.order?n.order:dn,i=n.symbols,r=hn&r,u=0,l=Dn(2*e,function(n){return u<t.length&&n===t[u]?(u++,i[0]):i[i.length-1]});return r&&(l=Dn(l.length,function(n){return i[0]===l[l.length-1-n]?i[i.length-1]:i[0]})),T[F].output.call(this,l)}}),e=J.LatinSquare=n({constructor:function n(t){if(!Nn(this,n))return new n(t);this.n=+(t||0),this.s=n.make(this.n)},__static__:{isLatin:function(n){return function(n){if(!n)return!1;for(var t,e,r,i=n.length,u=new Array(i),l=0;l<i;l++){if(i!==n[l].length)return!1;for(e=0;e<i;e++)u[e]=0;for(t=0;t<i;t++){if(r=n[l][t],(e=n[0].indexOf(r))<0||0<u[e])return!1;u[e]=1}for(e=0;e<i;e++)u[e]=0;for(t=0;t<i;t++){if(r=n[t][l],(e=n[0].indexOf(r))<0||0<u[e])return!1;u[e]=1}}return!0}(Nn(n,e)?n.s:n)},make:function(n){var t,e,r,i,u,l,s,o,m=new Array(n),c=J.Arithmetic.val,a=J.Arithmetic.num;if(n<=0)return null;if(s=0,1&n&&n%3)i=1,s=r=2;else if(1&n){for(o=a(n),t=1;t<n;t++)if(1===c(Nt(a(t),o))){for(e=(r=t)+1;e<n;e++)if(1===c(Nt(a(e),o))&&(s=1)===c(Nt(a((u=r)-(l=i=e)),o))&&1===c(Nt(a(r+i),o))){s=2;break}if(2===s)break}s&&(r=u,i=l)}if(s)for(t=0;t<n;t++)for(m[t]=new Array(n),e=0;e<n;e++)m[t][e]=(t*i+e*r)%n+1;else for(t=0;t<n;t++)for(m[t]=new Array(n),e=0;e<n;e++)m[t][e]=(e+t)%n+1;return m},toString:function(n){var t,e,r,i="";if(null==n)return i;for(t=n.length,e=String(t).length,r=0;r<t;r++)i+=n[r].map(function(n){return Yn(String(n),e," ")}).join(" ")+"\n";return i}},n:null,s:null,_str:null,dispose:function(){return this.n=null,this.s=null,this._str=null,this},toString:function(){return null==this._str&&(this._str=this.s?e.toString(this.s):""),this._str}}),U=J.MagicSquare=n({constructor:function n(t,e){if(!Nn(this,n))return new n(t,e);this.n=+(t||0),this.s=qn(e)?e:n.make(this.n)},__static__:{isMagic:function(n){return function(n){if(!n)return!1;for(var t,e,r=n.length,i=r*r,u=0,l=0,s=0,o=0,m=r*i+r>>>1,c=new Array(i),a=0;a<r;a++){if(r!==n[a].length)return!1;if(c[(e=n[a][0])-1]||(c[e-1]=[a,0]),e<1||i<e||a!==c[e-1][0]||0!==c[e-1][1])return!1;if(u=e,c[(e=n[0][a])-1]||(c[e-1]=[0,a]),e<1||i<e||0!==c[e-1][0]||a!==c[e-1][1])return!1;for(l=e,s+=n[a][a],o+=n[a][r-1-a],t=1;t<r;t++){if(c[(e=n[a][t])-1]||(c[e-1]=[a,t]),e<1||i<e||a!==c[e-1][0]||t!==c[e-1][1])return!1;if(u+=e,c[(e=n[t][a])-1]||(c[e-1]=[t,a]),e<1||i<e||t!==c[e-1][0]||a!==c[e-1][1])return!1;l+=e}if(u!==m||l!==m)return!1}return s===m&&o===m}(Nn(n,U)?n.s:n)},make:function n(t){if(t<=0||2===t)return null;if(1===t)return[[1]];for(var e,r,i,u,l,s,o,m,c,a,f,h,d,g=1&t,_=0==(3&t),v=t*t,b=t-g>>>1,p=new Array(t),y=0;y<t;y++)p[y]=new Array(t);if(g)for(h=t+b,d=b+g,e=y=r=0;r<v;r++,e++)t<=e&&(y++,e=0),p[y][e]=(h+e-y)%t*t+(d+y+e)%t+1;else if(_)for(e=y=r=0;r<v;r++,e++)t<=e&&(y++,e=0),p[y][e]=(y+1&3)>>>1==(e+1&3)>>>1?v-r:r+1;else{for(i=n(b),m=(o=(s=l=b*b)<<1)+l,e=y=r=0;r<l;r++,e++)b<=e&&(y++,e=0),u=i[y][e],p[y][e]=u,p[y+b][e+b]=u+s,p[y+b][e]=u+o,p[y][e+b]=u+m;for(a=c=b>>>1,e=0;e<b;e++)for(y=0;y<t;y++)!(y<c||t-a<y||y===c&&e===c)||0===y&&e===c||(f=p[y][e],p[y][e]=p[y][e+b],p[y][e+b]=f)}return p},product:function(){if(arguments.length<=1)return arguments[0];for(var n,t,e,r,i,u,l,s,o,m,c,a,f,h=arguments,d=h.length,g=h[0],_=1;_<d;){for(t=h[_++],r=(n=g).length,u=(i=t.length)*i,l=r*i,g=new Array(l),s=0;s<l;s++)g[s]=new Array(l);for(f=c=o=a=s=m=0,e=(n[m][a]-1)*u;m<r;)g[s+c][o+f]=e+t[c][f],++f>=i&&(f=0,i<=++c&&(o+=i,f=c=0,r<=++a&&(m++,s+=i,f=c=o=a=0),m<r&&a<r&&(e=(n[m][a]-1)*u)))}return g},pythagorean:yn,toString:function(n){var t,e,r,i="";if(null==n)return i;for(t=n.length,e=String(t*t).length,r=0;r<t;r++)i+=n[r].map(function(n){return Yn(String(n),e," ")}).join(" ")+"\n";return i}},n:null,s:null,_str:null,dispose:function(){return this.n=null,this.s=null,this._str=null,this},mul:function(n){return U(this.n*n.n,this.s&&n.s?U.product(this.s,n.s):null)},toString:function(){return null==this._str&&(this._str=this.s?U.toString(this.s):""),this._str}}),J}); \ No newline at end of file +!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;u<r;)if(null!=(n=e[u++]))for(t in n)z.call(n,t)&&(i[t]=n[t]);return i}function n(n,t){1===arguments.length&&(t=n,n=null),n=n||null;var e=t[X]||function(){};return z.call(t,"__static__")&&(e=r(e,t.__static__),delete t.__static__),e[F]=n?r(en(n[F]),t):t,e}var b,g,_,f,Z,m,p,v,a,S,h,C,N,d,y,x,q,A,o,I,w,R,M,E,D,T,u,P,k,$,L,j,t,e,U,J={VERSION:"1.0.6"},Q=Math,F="prototype",X="constructor",G=Array[F].slice,z=Object[F].hasOwnProperty,W=Object[F].toString,V=Q.log2||function(n){return Q.log(n)/Q.LN2},B=/^\s+|\s+$/g,H=String[F].trim?function(n){return n.trim()}:function(n){return n.replace(B,"")},K=/\[(\d+)\]/g,Y=/^\{(\d+(?:(?:\.\.\d+)?|(?:,\d+)*))\}$/,nn=/^!\{(\d+(?:(?:\.\.\d+)?|(?:,\d+)*))\}$/,tn=/^(-)?(\d+)(\.(\d+)?(\[\d+\])?)?(e-?\d+)?$/,en=Object.create,rn=Object.keys,un=2147483647,ln=1,sn=-1,on=3,mn=-3,cn=-2,fn=2,an=1,hn=2,dn=4,gn=8,_n=16,vn=32,bn=dn|gn|_n,pn=bn|vn|an|hn;function yn(){throw new Error("Method not implemented!")}function xn(n){return n}function qn(n){return n instanceof Array||"[object Array]"===W.call(n)}function An(n){return"[object Arguments]"===W.call(n)&&null!=n.length}function In(n){return"[object Object]"===W.call(n)}function On(n){return n instanceof String||"[object String]"===W.call(n)}function wn(n){return"number"==typeof n}function Sn(n){return"function"==typeof n}function Cn(n,t){if(Sn(n))if(qn(t)){for(var e=0,r=t.length;e<r;e++)if(Sn(t[e])&&(n===t[e]||n[F]instanceof t[e]))return!0}else if(Sn(t))return n===t||n[F]instanceof t;return!1}function Nn(n,t){if(qn(t)){for(var e=0,r=t.length;e<r;e++)if(Sn(t[e])&&n instanceof t[e])return!0}else if(Sn(t))return n instanceof t;return!1}function Rn(n){var t=n.toString(2),n=32-t.length;return 0<n?new Array(1+n).join("0")+t:t}function Zn(n){n=String(n).split("_");return n[0]+(1<n.length?"_{"+n[1]+"}":"")}function Mn(n){return Sn(n.toTex)?n.toTex():String(n)}function En(n,t,e,r,i,u,l){var s,o,m,c,f,a,h,d,g=t,_=null,t=e&&(qn(e)||An(e));if(t&&(null==r&&(r=0),null==i&&(i=e.length-1)),null==u&&(u=i<r?-1:1),0===u||t&&!e.length||Q.floor((i-r)/u)+1<=0)return g;if(m=u<0?((d=(r-i)%-u)&&(_=i),a=i+=d,h=r,c=-1,-(-u<<4)):((d=(i-r)%u)&&(_=i),a=r,h=i-=d,c=1,u<<4),f=r+u*(15&Q.floor((i-r)/u+1)),t){for(a=Q.max(0,a),h=Q.min(e.length-1,h),s=r;a<=s&&s<=h&&0<c*(f-s);s+=u)g=n(g,e[s],s);for(o=f;a<=o&&o<=h;o+=m)g=n(g,e[s=o],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s),g=n(g,e[s+=u],s);!0===l&&null!==_&&0<=_&&_<e.length&&(g=n(g,e[_],_))}else{for(s=r;a<=s&&s<=h&&0<c*(f-s);s+=u)g=n(g,s,s);for(o=f;a<=o&&o<=h;o+=m)g=n(g,s=o,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s),g=n(g,s+=u,s);!0===l&&null!==_&&(g=n(g,_,_))}return g}function Dn(n,r,i){var u,t=An(n)?G.call(n):qn(n)?n:0<(n|=0)?new Array(n):[];return 0<(n=t.length)&&null!=r&&(i=i||0,En(Sn(u=r)?function(n,t,e){return n[e]=r(e),n}:r===+r?function(n,t,e){return n[e]=u,u+=i,n}:function(n,t,e){return n[e]=r,n},t,t)),t}function Tn(n,t,r){return En(function(n,t,e){return n[e]=t[r],n},n,t)}function Pn(n,t,r,e,i){return null==t?n:En(qn(r)?function(n,t,e){return n[e]=r[e]-1-t,n}:function(n,t,e){return n[e]=r-1-t,n},n,t,e,i)}function kn(n,t,e,r,i){if(null==t)return n;if(null==r&&(r=0),null==i&&(i=t.length-1),n!==t||r<i)for(var u,l=r,s=i;l<=s;l++,s--)u=t[l],n[l]=t[s],n[s]=u;return n}function $n(t,e){return null==e&&(e=0),qn(t)?Dn(t,qn(e)?function(n){return e[n]-1-t[t.length-1-n]}:function(n){return e-t[n]}):t===+t&&e===+e?e-t:J.Arithmetic.sub(J.Arithmetic.num(e),t)}function Ln(n,t,r,e,i){if(null==t)return n;var u=0;return En(qn(r)?function(n,t,e){return n[e]=0<r[e]?(t+u)%r[e]:0,u+=r[e]-n[e],n}:function(n,t,e){return n[e]=(t+u)%r,u+=r-n[e],n},n,t,e,i)}function jn(n,t,r,e,i){if(null==t)return n;var u=0;return En(qn(r)?function(n,t,e){return n[e]=0<r[e]?(t+u)%r[e]:0,u+=t,n}:function(n,t,e){return n[e]=(t+u)%r,u+=t,n},n,t,e,i)}function Un(n){var t=J.Arithmetic;return n=t.num(n),t.xor(n,t.shr(n,t.I))}function Jn(n){var t=J.Arithmetic,e=t.O;for(n=t.num(n);t.gt(n,t.O);)e=t.xor(e,n),n=t.shr(n,t.I);return e}function Qn(n,t,r,e,i){return null==t?n:(null==i&&(i=t.length-1),null==e&&(e=0),n!==t||0!==r?En(function(n,t,e){return n[e+r]=t,n},n,t,r<0?e:i,r<0?i:e,r<0?1:-1):n)}function Fn(n,t,r,i,e,u,l,s){if(null==t)return null;null==r&&(r=1),null==i&&(i=0),null==e&&(e=0),null==u&&(u=t.length-1),null==l&&(l=e),null==s&&(s=u);var o=0,m=s<l?-1:1,c=l;return En(function(n,t,e){return t=i+r*t,n[c]=t-o,o=t,c+=m,n},n,t,e,u)}function Xn(n,t,r,i,e,u,l,s){if(null==t)return null;null==r&&(r=1),null==i&&(i=0),null==e&&(e=0),null==u&&(u=t.length-1),null==l&&(l=e),null==s&&(s=u);var o=0,m=s<l?-1:1,c=l;return En(function(n,t,e){return o+=t,n[c]=i+r*o,c+=m,n},n,t,e,u)}function Gn(n,t,e,r,i,u,l,s,o){o=!0===o,r=-1===r?-1:1,null==i&&(i=0),null==u&&(u=t===+t?t-1:t.length-1),null==l&&(l=0),null==s&&(s=e?e.length-1:-1);var m=u<i?-1:1,c=s<l?-1:1,f=m*(u-i)+1,a=i,h=l,d=0;if(!e||!e.length)return t===+t?Dn(t,i,m):t?t.slice():t;if(null==n&&(n=new Array(o?2*f:f)),t===+t){for(;0<=m*(u-a)&&0<=c*(s-h);)a===e[h]?(o&&(n[d++]=a),a+=m,h+=c):1===r&&a>e[h]||-1===r&&a<e[h]?h+=c:(n[d++]=a,a+=m);for(;0<=m*(u-a);)n[d++]=a,a+=m}else{for(;0<=m*(u-a)&&0<=c*(s-h);)t[a]===e[h]?(o&&(n[d++]=t[a]),a+=m,h+=c):1===r&&t[a]>e[h]||-1===r&&t[a]<e[h]?h+=c:(n[d++]=t[a],a+=m);for(;0<=m*(u-a);)n[d++]=t[a],a+=m}return d<n.length&&(n.length=d),n}function zn(n,t,e,r,i,u,l,s,o,m,c){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),c=!0===c;var f=u<i?-1:1,a=s<l?-1:1,h=f*(u-i)+1+(a*(s-l)+1),d=i,g=l,_=0,v=null,b=!(m=!0!==o&&(o=!1)!==m);if(null==n&&(n=new Array(h)),0===n.length)return c?t:n;for(;0<=f*(u-d)&&0<=a*(s-g);){if(m&&_){if(t[d]===v){d+=f;continue}if(e[g]===v){g+=a;continue}}o?1===r&&t[d][0]<e[g][0]||-1===r&&t[d][0]>e[g][0]?(n[_++]=v=t[d],d+=f):(1===r&&t[d][0]>e[g][0]||-1===r&&t[d][0]<e[g][0]?n[_++]=v=e[g]:(1===r&&t[d][1]<e[g][1]||-1===r&&t[d][1]>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]||-1===r&&t[d]>e[g]?(n[_++]=v=t[d],d+=f):(1===r&&t[d]>e[g]||-1===r&&t[d]<e[g]?n[_++]=v=e[g]:(n[_++]=v=t[d],b&&(n[_++]=e[g]),d+=f),g+=a)}for(;0<=f*(u-d);)!b&&t[d]===v||(n[_++]=v=t[d],d+=f);for(;0<=a*(s-g);)!b&&e[g]===v||(n[_++]=v=e[g],g+=a);if(c){for(d=f<0?u:i,_=0;_<h;_++,d++)t[d]=n[_];return t}return _<n.length&&(n.length=_),n}function Wn(e,r,n,i,u,t){if(null==u&&(u=0),null==t&&(t=e.length-1),!e.length)return e;var l=t<u?-1:1,s=l*(t-u)+1;if(i=!0===i,s<=1)return i?1==s?[u]:[]:e;r=-1===r?-1:1;var o,m,c,f,a,h=s,d=1,g=2,_=Q.min,v=new Array(s);if(i&&(e=En(function(n,t,e){return n[e-u]=[t,e],n},new Array(s),e,u,t,1),u=0,t=s-1),!0===n)for(f=u,o=[a=-1,-1,0,-1,-1,0];function(n,t,e,r,i,u){var l,s,o,m,c,f,a,h;for(r[0]=-1,r[1]=-1,r[2]=0,r[3]=-1,r[4]=-1,h=f=r[5]=0,m=t,c=-1,l=i?n[m][0]:n[m],o=m+1;o<=e;o++){if(l<(s=i?n[o][0]:n[o])){if(-1===f){c=o-1;break}0===f&&(f=1)}else if(s<l){if(1===f){c=o-1;break}0===f&&(f=-1)}l=s}if(0===f&&(f=u),-1===c)c=e,r[0]=m,r[1]=c,r[2]=f;else{for(t=c+1,a=-1,l=i?n[t][0]:n[t],o=t+1;o<=e;o++){if(l<(s=i?n[o][0]:n[o])){if(-1===h){a=o-1;break}0===h&&(h=1)}else if(s<l){if(1===h){a=o-1;break}0===h&&(h=-1)}l=s}-1===a&&(a=e),0===h&&(h=u),r[0]=m,r[1]=c,r[2]=f,r[3]=t,r[4]=a,r[5]=h}}(e,u,t,o,i,r),c=-1===o[3]?(r!==o[2]&&u<t&&kn(e,e,0,u,t),m=u,t):(o[2]=r!==o[2]?1:0,o[5]=r!==o[5]?1:0,zn(v,e,e,r,o[2]?o[1]:o[0],o[2]?o[0]:o[1],o[5]?o[4]:o[3],o[5]?o[3]:o[4],i,!1,!0),m=o[0],o[4]),-1!==a&&zn(v,e,e,r,f,a,m,c,i,!1,!0),(u=(a=c)+1)<=t;);else for(;0<h;)En(function(n,t){zn(v,e,e,r,u+l*t,u+l*(t+d-1),u+l*(t+d),u+l*_(t+g-1,s-1),i,!1,!0)},null,null,0,s-d-1,g),d<<=1,g<<=1,h>>=1;return i?Tn(e,e,1):e}function Vn(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<u){if(1===t)return 0;0===t&&(t=-1)}u=l}return 0===t?1:t}if(t=-1===t?-1:1,r<=e)return t;if(-1===t)for(u=n[e],i=e+1;i<=r;i++){if(u<(l=n[i]))return 0;u=l}else for(u=n[e],i=e+1;i<=r;i++){if((l=n[i])<u)return 0;u=l}return t}function Bn(n,t,r,e){var i,u=J.Math.rndInt,l=!0===t?1:0;return qn(r)?1<(i=r.length)&&En(function(n){var t,e;return l<i--&&(t=u(0,i-l),e=n[r[i]],n[r[i]]=n[r[t]],n[r[t]]=e),n},n,r,0,i-1):(null==r&&(r=0),null==e&&(e=n.length-1),1<(i=e-r+1)&&En(function(n){var t,e;return l<i--&&(t=u(0,i-l),e=n[r+i],n[r+i]=n[r+t],n[r+t]=e),n},n,n,0,i-1)),n}function Hn(n,t,e,r,i,u,l){null==u&&(u=0),null==l&&(l=n.length-1);var s,o,m,c,f=J.Math.rndInt,a=l-u+1;if(t=Q.min(t,a),e=!0===e,s=new Array(t),!0===r){for(--a,o=0;o<t;o++)s[o]=n[u+f(0,a)];return e&&Wn(s),s}for(o=0;o<t;o++)c=n[u+(m=f(0,--a))],n[u+m]=n[u+a],n[u+a]=c,s[o]=c,i&&(i[o]=m);if(i)for(o=t-1;0<=o;o--)m=i[o],c=n[u+a],n[u+a]=n[u+m],n[u+m]=c,a++;return e&&Wn(s),s}function Kn(n,t,e,r,i,u){var l;if(u=u||function(n,t){return n<t},null==r&&(r=0),null==i&&(i=n.length),r<0)return-1;if(-1===(e=-1===e?-1:1))for(;r<i;)u(n[l=r+i>>>1],t)?r=l+1:i=l;else for(;r<i;)u(t,n[l=r+i>>>1])?i=l:r=l+1;return r}function Yn(n,t,e){var r=n.length;return e=e||" ",r<t?new Array(t-r+1).join(e)+n:n}function nt(n,t){return n+t}function tt(n,t,e,r){var i=J.Arithmetic;return En(function(n,t){return n instanceof _?n.add(t):t instanceof _?t.add(n):i.add(n,t)},i.O,n,t,e,r)}function et(n,t,e,r){var i=J.Arithmetic;return En(function(n,t){return n instanceof _?n.mul(t):t instanceof _?t.mul(n):i.mul(n,t)},i.I,n,t,e,r)}function rt(n,t){var e=J.Arithmetic;return e.equ(t,e.I)?e.O:e.mod(e.sub(t,n),t)}function it(n,t,e){var r=J.Arithmetic;r.num;return r.equ(e,r.I)?r.O:r.mod(r.add(n,t),e)}function ut(n,t,e){var r=J.Arithmetic;r.num;return r.equ(e,r.I)?r.O:(n=r.mod(n,e),t=r.mod(t,e),r.mod(r.mul(n,t),e))}function lt(n,t){for(var e,r,i=J.Arithmetic,u=i.O,l=i.I,s=(i.num,i.J),o=u,m=l,c=t,f=n;!i.equ(u,f);)r=i.div(c,f),e=i.mod(c,f),c=f,f=e,r=i.sub(o,i.mul(r,m)),o=m,m=r;return i.equ(l,c)&&(s=o),i.gt(u,s)&&(s=i.add(s,t)),s}function st(n,t,e){var r,i,u=J.Arithmetic,l=u.O,s=u.I;u.num;if(u.equ(s,e))return l;if(u.equ(l,t))return s;if(i=s,n=u.mod(n,e),u.gt(l,t)&&(t=u.abs(t),n=lt(n,e)),u.equ(s,t))return n;if(u.isDefault()||u.lte(t,un))for(t=u.val(t);0!==t;)1&t&&(i=ut(i,n,e)),t>>=1,n=ut(n,n,e);else for(r=u.II;!u.equ(t,l);)u.equ(s,u.mod(t,r))&&(i=ut(i,n,e)),t=u.div(t,r),n=ut(n,n,e);return i}function ot(n,t){var e,r,i=J.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,un))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 mt(n){var t,e,r,i,u,l,s=J.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,un))return s.num(Q.floor(Q.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 ct(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=Q.pow(n,1/t),t=Q.pow(r,t),Q.abs(n-t)<1&&0<n==0<t?e&&n<0?-r:r:1))}function ft(n,t){var e,r,i,u=J.Arithmetic,l=u.I;if(u.gt(l,t))return null;if(u.equ(l,t)||u.equ(n,l)||u.equ(n,u.O))return n;if(u.isDefault()||u.lte(n,un))return u.num(Q.floor(ct(u.val(n),u.val(t))));for(i=u.sub(t,l),e=n,r=u.add(n,l);u.lt(e,r);)r=e,e=u.div(u.add(u.mul(r,i),u.div(n,u.pow(r,i))),t);return r}function at(n,t,e){var r,i,u,l,s,o,m=J.Arithmetic,c=m.O,f=m.I,a=m.II,h=0;if(t.lt(f))return null;if(t.equ(f)||n.equ(c)||n.equ(f))return n;for(m=n[X],null==e&&(e=6),e=Q.abs(+e),r=t.sub(f),i=new m(n.ttm().rad(t),n.symbol,n.ring),o=n.maxdeg(!0),u=i.pow(r),l=n.sub(u.mul(i));!(l.equ(c)||(s=l.ttm(!0).div(u.mul(t).ttm(!0))).equ(c)||(u=(i=i.add(s)).pow(r),l=n.sub(u.mul(i)),i.maxdeg(!0)*t>o&&(h++,i.terms.length>=e||e<=h))););return 0===h&&t.mod(a).equ(c)?i.abs():i}function ht(n,t){var e,r,i,u=J.Arithmetic,l=u.O,s=u.I,o=u.II,m=p.Epsilon();if(t.equ(l))return null;if(Nn(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)||Nn(n,Z)?p:n[X]).cast(n),Cn(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=Cn(u,R)?new u(at(n.num,t),at(n.den,t)):Cn(u,p)?new u(ft(n.num,t.num),ft(n.den,t.num)):Cn(u,v)?!n.isReal()||!n.real().gte(l)&&t.mod(o).equ(l)?new u(s,s):new u(p(ft(n.real().num,t.num),ft(n.real().den,t.num)),p.Zero()):u.One(),i=t.sub(s),Cn(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 dt(n,t,e){var r,i,u,l,s,o,m=J.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=Nt(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 gt(n,t){var e=J.Arithmetic,r=(e.num,e.I),i=e.II;return st(n,e.div(e.sub(t,r),i),t)}function _t(n,t){var e,r,i,u,l,s,o,m,c,f,a,h,d=J.Arithmetic,g=(d.num,d.O),_=d.I;if(!d.equ(_,gt(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 st(n,d.div(d.add(t,_),4),t);for(l=g;d.lt(l,t)&&!d.equ(r,gt(l,t));l=d.add(l,_));for(s=st(l,i,t),o=st(n,d.div(d.add(i,_),e),t),m=st(n,i,t),c=u,f=g;!d.equ(g,d.mod(d.sub(m,_),t));){for(f=ut(m,m,t),h=1;h<c&&!d.equ(g,d.mod(d.sub(f,_),t));h++)f=ut(f,f,t);o=ut(o,a=st(s,d.shl(_,c-h-1),t),t),s=ut(a,a,t),m=ut(m,s,t),c=h}return n=d.sub(t,o),d.lt(n,o)?n:o}function vt(n,t){var e=J.Arithmetic,r=e.O,i=e.I,u=r;if(e.lt(t,e.II))return r;if(e.lte(n,t))return e.equ(n,t)?i:r;if(e.isDefault()||e.lte(n,un))return e.num(Q.floor(Q.log(e.val(n))/Q.log(e.val(t))));for(;e.gte(n,t);)n=e.div(n,t),u=e.add(u,i);return u}function bt(){var n=J.Arithmetic.num;return bt.list||(bt.list=[n(2),n(3),n(5),n(7),n(11),n(13),n(17),n(19),n(23),n(29),n(31),n(37),n(41),n(43),n(47),n(53),n(59),n(61),n(67),n(71),n(73),n(79),n(83),n(89),n(97),n(101),n(103),n(107),n(109),n(113),n(127),n(131),n(137),n(139),n(149),n(151),n(157),n(163),n(167),n(173),n(179),n(181),n(191),n(193),n(197),n(199),n(211),n(223),n(227),n(229),n(233),n(239),n(241),n(251),n(257),n(263),n(269),n(271),n(277),n(281),n(283),n(293),n(307),n(311),n(313),n(317),n(331),n(337),n(347),n(349),n(353),n(359),n(367),n(373),n(379),n(383),n(389),n(397),n(401),n(409),n(419),n(421),n(431),n(433),n(439),n(443),n(449),n(457),n(461),n(463),n(467),n(479),n(487),n(491),n(499),n(503),n(509),n(521),n(523),n(541),n(547),n(557),n(563),n(569),n(571),n(577),n(587),n(593),n(599),n(601),n(607),n(613),n(617),n(619),n(631),n(641),n(643),n(647),n(653),n(659),n(661),n(673),n(677),n(683),n(691),n(701),n(709),n(719),n(727),n(733),n(739),n(743),n(751),n(757),n(761),n(769),n(773),n(787),n(797),n(809),n(811),n(821),n(823),n(827),n(829),n(839),n(853),n(857),n(859),n(863),n(877),n(881),n(883),n(887),n(907),n(911),n(919),n(929),n(937),n(941),n(947),n(953),n(967),n(971),n(977),n(983),n(991),n(997),n(1009),n(1013),n(1019),n(1021),n(1031),n(1033),n(1039),n(1049),n(1051),n(1061),n(1063),n(1069),n(1087),n(1091),n(1093),n(1097),n(1103),n(1109),n(1117),n(1123),n(1129),n(1151),n(1153),n(1163),n(1171),n(1181),n(1187),n(1193),n(1201),n(1213),n(1217),n(1223),n(1229),n(1231),n(1237),n(1249),n(1259),n(1277),n(1279),n(1283),n(1289),n(1291),n(1297),n(1301),n(1303),n(1307),n(1319),n(1321),n(1327),n(1361),n(1367),n(1373),n(1381),n(1399),n(1409),n(1423),n(1427),n(1429),n(1433),n(1439),n(1447),n(1451),n(1453),n(1459),n(1471),n(1481),n(1483),n(1487),n(1489),n(1493),n(1499),n(1511),n(1523),n(1531),n(1543),n(1549),n(1553),n(1559),n(1567),n(1571),n(1579),n(1583),n(1597),n(1601),n(1607),n(1609),n(1613),n(1619),n(1621),n(1627),n(1637),n(1657),n(1663),n(1667),n(1669),n(1693),n(1697),n(1699),n(1709),n(1721),n(1723),n(1733),n(1741),n(1747),n(1753),n(1759),n(1777),n(1783),n(1787),n(1789),n(1801),n(1811),n(1823),n(1831),n(1847),n(1861),n(1867),n(1871),n(1873),n(1877),n(1879),n(1889),n(1901),n(1907),n(1913),n(1931),n(1933),n(1949),n(1951),n(1973),n(1979),n(1987),n(1993),n(1997),n(1999),n(2003),n(2011),n(2017),n(2027),n(2029),n(2039),n(2053),n(2063),n(2069),n(2081),n(2083),n(2087),n(2089),n(2099),n(2111),n(2113),n(2129),n(2131),n(2137),n(2141),n(2143),n(2153),n(2161),n(2179),n(2203),n(2207),n(2213),n(2221),n(2237),n(2239),n(2243),n(2251),n(2267),n(2269),n(2273),n(2281),n(2287),n(2293),n(2297),n(2309),n(2311),n(2333),n(2339),n(2341),n(2347),n(2351),n(2357),n(2371),n(2377),n(2381),n(2383),n(2389),n(2393),n(2399),n(2411),n(2417),n(2423),n(2437),n(2441),n(2447),n(2459),n(2467),n(2473),n(2477),n(2503),n(2521),n(2531),n(2539),n(2543),n(2549),n(2551),n(2557),n(2579),n(2591),n(2593),n(2609),n(2617),n(2621),n(2633),n(2647),n(2657),n(2659),n(2663),n(2671),n(2677),n(2683),n(2687),n(2689),n(2693),n(2699),n(2707),n(2711),n(2713),n(2719),n(2729),n(2731),n(2741),n(2749),n(2753),n(2767),n(2777),n(2789),n(2791),n(2797),n(2801),n(2803),n(2819),n(2833),n(2837),n(2843),n(2851),n(2857),n(2861),n(2879),n(2887),n(2897),n(2903),n(2909),n(2917),n(2927),n(2939),n(2953),n(2957),n(2963),n(2969),n(2971),n(2999),n(3001),n(3011),n(3019),n(3023),n(3037),n(3041),n(3049),n(3061),n(3067),n(3079),n(3083),n(3089),n(3109),n(3119),n(3121),n(3137),n(3163),n(3167),n(3169),n(3181),n(3187),n(3191),n(3203),n(3209),n(3217),n(3221),n(3229),n(3251),n(3253),n(3257),n(3259),n(3271),n(3299),n(3301),n(3307),n(3313),n(3319),n(3323),n(3329),n(3331),n(3343),n(3347),n(3359),n(3361),n(3371),n(3373),n(3389),n(3391),n(3407),n(3413),n(3433),n(3449),n(3457),n(3461),n(3463),n(3467),n(3469),n(3491),n(3499),n(3511),n(3517),n(3527),n(3529),n(3533),n(3539),n(3541),n(3547),n(3557),n(3559),n(3571),n(3581),n(3583),n(3593),n(3607),n(3613),n(3617),n(3623),n(3631),n(3637),n(3643),n(3659),n(3671),n(3673),n(3677),n(3691),n(3697),n(3701),n(3709),n(3719),n(3727),n(3733),n(3739),n(3761),n(3767),n(3769),n(3779),n(3793),n(3797),n(3803),n(3821),n(3823),n(3833),n(3847),n(3851),n(3853),n(3863),n(3877),n(3881),n(3889),n(3907),n(3911),n(3917),n(3919),n(3923),n(3929),n(3931),n(3943),n(3947),n(3967),n(3989),n(4001),n(4003),n(4007),n(4013),n(4019),n(4021),n(4027),n(4049),n(4051),n(4057),n(4073),n(4079),n(4091),n(4093),n(4099),n(4111),n(4127),n(4129),n(4133),n(4139),n(4153),n(4157),n(4159),n(4177),n(4201),n(4211),n(4217),n(4219),n(4229),n(4231),n(4241),n(4243),n(4253),n(4259),n(4261),n(4271),n(4273),n(4283),n(4289),n(4297),n(4327),n(4337),n(4339),n(4349),n(4357),n(4363),n(4373),n(4391),n(4397),n(4409),n(4421),n(4423),n(4441),n(4447),n(4451),n(4457),n(4463),n(4481),n(4483),n(4493),n(4507),n(4513),n(4517),n(4519),n(4523),n(4547),n(4549),n(4561),n(4567),n(4583),n(4591),n(4597),n(4603),n(4621),n(4637),n(4639),n(4643),n(4649),n(4651),n(4657),n(4663),n(4673),n(4679),n(4691),n(4703),n(4721),n(4723),n(4729),n(4733),n(4751),n(4759),n(4783),n(4787),n(4789),n(4793),n(4799),n(4801),n(4813),n(4817),n(4831),n(4861),n(4871),n(4877),n(4889),n(4903),n(4909),n(4919),n(4931),n(4933),n(4937),n(4943),n(4951),n(4957),n(4967),n(4969),n(4973),n(4987),n(4993),n(4999),n(5003),n(5009),n(5011),n(5021),n(5023),n(5039),n(5051),n(5059),n(5077),n(5081),n(5087),n(5099),n(5101),n(5107),n(5113),n(5119),n(5147),n(5153),n(5167),n(5171),n(5179),n(5189),n(5197),n(5209),n(5227),n(5231),n(5233),n(5237),n(5261),n(5273),n(5279),n(5281),n(5297),n(5303),n(5309),n(5323),n(5333),n(5347),n(5351),n(5381),n(5387),n(5393),n(5399),n(5407),n(5413),n(5417),n(5419),n(5431),n(5437),n(5441),n(5443),n(5449),n(5471),n(5477),n(5479),n(5483),n(5501),n(5503),n(5507),n(5519),n(5521),n(5527),n(5531),n(5557),n(5563),n(5569),n(5573),n(5581),n(5591),n(5623),n(5639),n(5641),n(5647),n(5651),n(5653),n(5657),n(5659),n(5669),n(5683),n(5689),n(5693),n(5701),n(5711),n(5717),n(5737),n(5741),n(5743),n(5749),n(5779),n(5783),n(5791),n(5801),n(5807),n(5813),n(5821),n(5827),n(5839),n(5843),n(5849),n(5851),n(5857),n(5861),n(5867),n(5869),n(5879),n(5881),n(5897),n(5903),n(5923),n(5927),n(5939),n(5953),n(5981),n(5987),n(6007),n(6011),n(6029),n(6037),n(6043),n(6047),n(6053),n(6067),n(6073),n(6079),n(6089),n(6091),n(6101),n(6113),n(6121),n(6131),n(6133),n(6143),n(6151),n(6163),n(6173),n(6197),n(6199),n(6203),n(6211),n(6217),n(6221),n(6229),n(6247),n(6257),n(6263),n(6269),n(6271),n(6277),n(6287),n(6299),n(6301),n(6311),n(6317),n(6323),n(6329),n(6337),n(6343),n(6353),n(6359),n(6361),n(6367),n(6373),n(6379),n(6389),n(6397),n(6421),n(6427),n(6449),n(6451),n(6469),n(6473),n(6481),n(6491),n(6521),n(6529),n(6547),n(6551),n(6553),n(6563),n(6569),n(6571),n(6577),n(6581),n(6599),n(6607),n(6619),n(6637),n(6653),n(6659),n(6661),n(6673),n(6679),n(6689),n(6691),n(6701),n(6703),n(6709),n(6719),n(6733),n(6737),n(6761),n(6763),n(6779),n(6781),n(6791),n(6793),n(6803),n(6823),n(6827),n(6829),n(6833),n(6841),n(6857),n(6863),n(6869),n(6871),n(6883),n(6899),n(6907),n(6911),n(6917),n(6947),n(6949),n(6959),n(6961),n(6967),n(6971),n(6977),n(6983),n(6991),n(6997),n(7001),n(7013),n(7019),n(7027),n(7039),n(7043),n(7057),n(7069),n(7079),n(7103),n(7109),n(7121),n(7127),n(7129),n(7151),n(7159),n(7177),n(7187),n(7193),n(7207),n(7211),n(7213),n(7219),n(7229),n(7237),n(7243),n(7247),n(7253),n(7283),n(7297),n(7307),n(7309),n(7321),n(7331),n(7333),n(7349),n(7351),n(7369),n(7393),n(7411),n(7417),n(7433),n(7451),n(7457),n(7459),n(7477),n(7481),n(7487),n(7489),n(7499),n(7507),n(7517),n(7523),n(7529),n(7537),n(7541),n(7547),n(7549),n(7559),n(7561),n(7573),n(7577),n(7583),n(7589),n(7591),n(7603),n(7607),n(7621),n(7639),n(7643),n(7649),n(7669),n(7673),n(7681),n(7687),n(7691),n(7699),n(7703),n(7717),n(7723),n(7727),n(7741),n(7753),n(7757),n(7759),n(7789),n(7793),n(7817),n(7823),n(7829),n(7841),n(7853),n(7867),n(7873),n(7877),n(7879),n(7883),n(7901),n(7907),n(7919),n(7927),n(7933),n(7937),n(7949),n(7951),n(7963),n(7993),n(8009),n(8011),n(8017),n(8039),n(8053),n(8059),n(8069),n(8081),n(8087),n(8089),n(8093),n(8101),n(8111),n(8117),n(8123),n(8147),n(8161),n(8167),n(8171),n(8179),n(8191),n(8209),n(8219),n(8221),n(8231),n(8233),n(8237),n(8243),n(8263),n(8269),n(8273),n(8287),n(8291),n(8293),n(8297),n(8311),n(8317),n(8329),n(8353),n(8363),n(8369),n(8377),n(8387),n(8389),n(8419),n(8423),n(8429),n(8431),n(8443),n(8447),n(8461),n(8467),n(8501),n(8513),n(8521),n(8527),n(8537),n(8539),n(8543),n(8563),n(8573),n(8581),n(8597),n(8599),n(8609),n(8623),n(8627),n(8629),n(8641),n(8647),n(8663),n(8669),n(8677),n(8681),n(8689),n(8693),n(8699),n(8707),n(8713),n(8719),n(8731),n(8737),n(8741),n(8747),n(8753),n(8761),n(8779),n(8783),n(8803),n(8807),n(8819),n(8821),n(8831),n(8837),n(8839),n(8849),n(8861),n(8863),n(8867),n(8887),n(8893),n(8923),n(8929),n(8933),n(8941),n(8951),n(8963),n(8969),n(8971),n(8999),n(9001),n(9007),n(9011),n(9013),n(9029),n(9041),n(9043),n(9049),n(9059),n(9067),n(9091),n(9103),n(9109),n(9127),n(9133),n(9137),n(9151),n(9157),n(9161),n(9173),n(9181),n(9187),n(9199),n(9203),n(9209),n(9221),n(9227),n(9239),n(9241),n(9257),n(9277),n(9281),n(9283),n(9293),n(9311),n(9319),n(9323),n(9337),n(9341),n(9343),n(9349),n(9371),n(9377),n(9391),n(9397),n(9403),n(9413),n(9419),n(9421),n(9431),n(9433),n(9437),n(9439),n(9461),n(9463),n(9467),n(9473),n(9479),n(9491),n(9497),n(9511),n(9521),n(9533),n(9539),n(9547),n(9551),n(9587),n(9601),n(9613),n(9619),n(9623),n(9629),n(9631),n(9643),n(9649),n(9661),n(9677),n(9679),n(9689),n(9697),n(9719),n(9721),n(9733),n(9739),n(9743),n(9749),n(9767),n(9769),n(9781),n(9787),n(9791),n(9803),n(9811),n(9817),n(9829),n(9833),n(9839),n(9851),n(9857),n(9859),n(9871),n(9883),n(9887),n(9901),n(9907),n(9923),n(9929),n(9931),n(9941),n(9949),n(9967),n(9973),n(10007),n(10009),n(10037),n(10039),n(10061),n(10067),n(10069),n(10079),n(10091),n(10093),n(10099),n(10103),n(10111),n(10133),n(10139),n(10141),n(10151),n(10159),n(10163),n(10169),n(10177),n(10181),n(10193),n(10211),n(10223),n(10243),n(10247),n(10253),n(10259),n(10267),n(10271),n(10273),n(10289),n(10301),n(10303),n(10313),n(10321),n(10331),n(10333),n(10337),n(10343),n(10357),n(10369),n(10391),n(10399),n(10427),n(10429),n(10433),n(10453),n(10457),n(10459),n(10463),n(10477),n(10487),n(10499),n(10501),n(10513),n(10529),n(10531),n(10559),n(10567),n(10589),n(10597),n(10601),n(10607),n(10613),n(10627),n(10631),n(10639),n(10651),n(10657),n(10663),n(10667),n(10687),n(10691),n(10709),n(10711),n(10723),n(10729),n(10733),n(10739),n(10753),n(10771),n(10781),n(10789),n(10799),n(10831),n(10837),n(10847),n(10853),n(10859),n(10861),n(10867),n(10883),n(10889),n(10891),n(10903),n(10909),n(10937),n(10939),n(10949),n(10957),n(10973),n(10979),n(10987),n(10993),n(11003),n(11027),n(11047),n(11057),n(11059),n(11069),n(11071),n(11083),n(11087),n(11093),n(11113),n(11117),n(11119),n(11131),n(11149),n(11159),n(11161),n(11171),n(11173),n(11177),n(11197),n(11213),n(11239),n(11243),n(11251),n(11257),n(11261),n(11273),n(11279),n(11287),n(11299),n(11311),n(11317),n(11321),n(11329),n(11351),n(11353),n(11369),n(11383),n(11393),n(11399),n(11411),n(11423),n(11437),n(11443),n(11447),n(11467),n(11471),n(11483),n(11489),n(11491),n(11497),n(11503),n(11519),n(11527),n(11549),n(11551),n(11579),n(11587),n(11593),n(11597),n(11617),n(11621),n(11633),n(11657),n(11677),n(11681),n(11689),n(11699),n(11701),n(11717),n(11719),n(11731),n(11743),n(11777),n(11779),n(11783),n(11789),n(11801),n(11807),n(11813),n(11821),n(11827),n(11831),n(11833),n(11839),n(11863),n(11867),n(11887),n(11897),n(11903),n(11909),n(11923),n(11927),n(11933),n(11939),n(11941),n(11953),n(11959),n(11969),n(11971),n(11981),n(11987),n(12007),n(12011),n(12037),n(12041),n(12043),n(12049),n(12071),n(12073),n(12097),n(12101),n(12107),n(12109),n(12113),n(12119),n(12143),n(12149),n(12157),n(12161),n(12163),n(12197),n(12203),n(12211),n(12227),n(12239),n(12241),n(12251),n(12253),n(12263),n(12269),n(12277),n(12281),n(12289),n(12301),n(12323),n(12329),n(12343),n(12347),n(12373),n(12377),n(12379),n(12391),n(12401),n(12409),n(12413),n(12421),n(12433),n(12437),n(12451),n(12457),n(12473),n(12479),n(12487),n(12491),n(12497),n(12503),n(12511),n(12517),n(12527),n(12539),n(12541),n(12547),n(12553),n(12569),n(12577),n(12583),n(12589),n(12601),n(12611),n(12613),n(12619),n(12637),n(12641),n(12647),n(12653),n(12659),n(12671),n(12689),n(12697),n(12703),n(12713),n(12721),n(12739),n(12743),n(12757),n(12763),n(12781),n(12791),n(12799),n(12809),n(12821),n(12823),n(12829),n(12841),n(12853),n(12889),n(12893),n(12899),n(12907),n(12911),n(12917),n(12919),n(12923),n(12941),n(12953),n(12959),n(12967),n(12973),n(12979),n(12983),n(13001),n(13003),n(13007),n(13009),n(13033),n(13037),n(13043),n(13049),n(13063),n(13093),n(13099),n(13103),n(13109),n(13121),n(13127),n(13147),n(13151),n(13159),n(13163),n(13171),n(13177),n(13183),n(13187),n(13217),n(13219),n(13229),n(13241),n(13249),n(13259),n(13267),n(13291),n(13297),n(13309),n(13313),n(13327),n(13331),n(13337),n(13339),n(13367),n(13381),n(13397),n(13399),n(13411),n(13417),n(13421),n(13441),n(13451),n(13457),n(13463),n(13469),n(13477),n(13487),n(13499),n(13513),n(13523),n(13537),n(13553),n(13567),n(13577),n(13591),n(13597),n(13613),n(13619),n(13627),n(13633),n(13649),n(13669),n(13679),n(13681),n(13687),n(13691),n(13693),n(13697),n(13709),n(13711),n(13721),n(13723),n(13729),n(13751),n(13757),n(13759),n(13763),n(13781),n(13789),n(13799),n(13807),n(13829),n(13831),n(13841),n(13859),n(13873),n(13877),n(13879),n(13883),n(13901),n(13903),n(13907),n(13913),n(13921),n(13931),n(13933),n(13963),n(13967),n(13997),n(13999),n(14009),n(14011),n(14029),n(14033),n(14051),n(14057),n(14071),n(14081),n(14083),n(14087),n(14107),n(14143),n(14149),n(14153),n(14159),n(14173),n(14177),n(14197),n(14207),n(14221),n(14243),n(14249),n(14251),n(14281),n(14293),n(14303),n(14321),n(14323),n(14327),n(14341),n(14347),n(14369),n(14387),n(14389),n(14401),n(14407),n(14411),n(14419),n(14423),n(14431),n(14437),n(14447),n(14449),n(14461),n(14479),n(14489),n(14503),n(14519),n(14533),n(14537),n(14543),n(14549),n(14551),n(14557),n(14561),n(14563),n(14591),n(14593),n(14621),n(14627),n(14629),n(14633),n(14639),n(14653),n(14657),n(14669),n(14683),n(14699),n(14713),n(14717),n(14723),n(14731),n(14737),n(14741),n(14747),n(14753),n(14759),n(14767),n(14771),n(14779),n(14783),n(14797),n(14813),n(14821),n(14827),n(14831),n(14843),n(14851),n(14867),n(14869),n(14879),n(14887),n(14891),n(14897),n(14923),n(14929),n(14939),n(14947),n(14951),n(14957),n(14969),n(14983),n(15013),n(15017),n(15031),n(15053),n(15061),n(15073),n(15077),n(15083),n(15091),n(15101),n(15107),n(15121),n(15131),n(15137),n(15139),n(15149),n(15161),n(15173),n(15187),n(15193),n(15199),n(15217),n(15227),n(15233),n(15241),n(15259),n(15263),n(15269),n(15271),n(15277),n(15287),n(15289),n(15299),n(15307),n(15313),n(15319),n(15329),n(15331),n(15349),n(15359),n(15361),n(15373),n(15377),n(15383),n(15391),n(15401),n(15413),n(15427),n(15439),n(15443),n(15451),n(15461),n(15467),n(15473),n(15493),n(15497),n(15511),n(15527),n(15541),n(15551),n(15559),n(15569),n(15581),n(15583),n(15601),n(15607),n(15619),n(15629),n(15641),n(15643),n(15647),n(15649),n(15661),n(15667),n(15671),n(15679),n(15683),n(15727),n(15731),n(15733),n(15737),n(15739),n(15749),n(15761),n(15767),n(15773),n(15787),n(15791),n(15797),n(15803),n(15809),n(15817),n(15823),n(15859),n(15877),n(15881),n(15887),n(15889),n(15901),n(15907),n(15913),n(15919),n(15923),n(15937),n(15959),n(15971),n(15973),n(15991),n(16001),n(16007),n(16033),n(16057),n(16061),n(16063),n(16067),n(16069),n(16073),n(16087),n(16091),n(16097),n(16103),n(16111),n(16127),n(16139),n(16141),n(16183),n(16187),n(16189),n(16193),n(16217),n(16223),n(16229),n(16231),n(16249),n(16253),n(16267),n(16273),n(16301),n(16319),n(16333),n(16339),n(16349),n(16361),n(16363),n(16369),n(16381),n(16411),n(16417),n(16421),n(16427),n(16433),n(16447),n(16451),n(16453),n(16477),n(16481),n(16487),n(16493),n(16519),n(16529),n(16547),n(16553),n(16561),n(16567),n(16573),n(16603),n(16607),n(16619),n(16631),n(16633),n(16649),n(16651),n(16657),n(16661),n(16673),n(16691),n(16693),n(16699),n(16703),n(16729),n(16741),n(16747),n(16759),n(16763),n(16787),n(16811),n(16823),n(16829),n(16831),n(16843),n(16871),n(16879),n(16883),n(16889),n(16901),n(16903),n(16921),n(16927),n(16931),n(16937),n(16943),n(16963),n(16979),n(16981),n(16987),n(16993),n(17011),n(17021),n(17027),n(17029),n(17033),n(17041),n(17047),n(17053),n(17077),n(17093),n(17099),n(17107),n(17117),n(17123),n(17137),n(17159),n(17167),n(17183),n(17189),n(17191),n(17203),n(17207),n(17209),n(17231),n(17239),n(17257),n(17291),n(17293),n(17299),n(17317),n(17321),n(17327),n(17333),n(17341),n(17351),n(17359),n(17377),n(17383),n(17387),n(17389)]),bt.list}function pt(r,n,t){for(var e,i,u,l,s=J.Arithmetic,o=(s.num,s.O,s.I),m=s.II,c=s.sub(r,o),f=s.sub(c,o),a=c,h=0;e=s.div(a,m),i=s.mod(a,m),!s.equ(i,o);)h+=1,a=e;function d(n){var t,e=st(n,a,r);if(!s.equ(e,o)&&!s.equ(e,c)){for(t=1;t<h;t++){if(e=s.mod(s.mul(e,e),r),s.equ(e,o))return 1;if(s.equ(e,c))return}return 1}}if(null==n&&(n=5),qn(n)){for(u=0,l=n.length;u<l;u++)if(d(n[u]))return!1;if(null!=t)for(t=+t,u=0;u<t;u++)if(d(s.rnd(m,f)))return!1}else for(n=+n,u=0;u<n;u++)if(d(s.rnd(m,f)))return!1;return!0}function yt(n){var t,e,r,i=J.Arithmetic,u=i.O,l=i.I,s=(i.J,i.II),o=mt(n);if(i.equ(n,i.mul(o,o)))return!1;if(o=function(n){for(var t,e=J.Arithmetic,r=e.num,i=e.O,u=e.J,l=e.I,s=(e.II,r(4)),o=r(3),m=l,c=r(5);;){if(t=Nt(c,n),e.gt(t,l)&&!e.equ(t,n))return[i,i,i];if(e.equ(u,dt(c,n,t)))break;o=e.add(o,l),c=e.sub(e.mul(o,o),s)}return[c,o,m]}(n),i.equ(u,o[0]))return!1;if(l=(e=function(n,t,e){for(var r=J.Arithmetic,i=0,u=(t=t||r.digits(n,2)).length-1;0<=u&&"0"===t.charAt(u);)u--,i++;return e?[i,u<0?"0":t.slice(0,u+1)]:i}(i.add(n,l),null,!0))[1],e=e[0],l=(o=function(n,t,e,r,i){var u,l,s,o,m,c,f,a=J.Arithmetic,h=a.O,d=a.J,g=a.I,_=a.II,v=a.sub(a.mul(t,t),a.mul(e,4));if(a.equ(h,v))return null;if("0"===(i=i||a.digits(r,2)))return[h,_,e];if(u=g,l=t,m=e,c=i.length,a.equ(g,e))for(f=1;f<c;f++)u=a.mod(a.mul(u,l),n),l=a.mod(a.sub(a.mul(l,l),_),n),"1"===i.charAt(f)&&(s=u,o=l,u=a.add(a.mul(s,t),o),l=a.add(a.mul(o,t),a.mul(s,v)),a.equ(g,a.mod(u,_))&&(u=a.add(u,n)),a.equ(g,a.mod(l,_))&&(l=a.add(l,n)),u=a.div(u,_),l=a.div(l,_));else if(a.equ(g,t)&&a.equ(d,e))for(f=1;f<c;f++)u=a.mod(a.mul(u,l),n),a.equ(g,m)?l=a.mod(a.sub(a.mul(l,l),_),n):(l=a.mod(a.add(a.mul(l,l),_),n),m=g),"1"===i.charAt(f)&&(s=u,o=l,u=a.add(s,o),l=a.add(o,a.mul(s,v)),a.equ(g,a.mod(u,_))&&(u=a.add(u,n)),a.equ(g,a.mod(l,_))&&(l=a.add(l,n)),u=a.div(u,_),l=a.div(l,_),m=d);else for(f=1;f<c;f++)u=a.mod(a.mul(u,l),n),l=a.mod(a.sub(a.mul(l,l),a.mul(_,m)),n),m=a.mul(m,m),"1"===i.charAt(f)&&(s=u,o=l,u=a.add(a.mul(s,t),o),l=a.add(a.mul(o,t),a.mul(s,v)),a.equ(g,a.mod(u,_))&&(u=a.add(u,n)),a.equ(g,a.mod(l,_))&&(l=a.add(l,n)),u=a.div(u,_),l=a.div(l,_),m=a.mul(m,e)),m=a.mod(m,n);return[a.mod(u,n),a.mod(l,n),m]}(n,o[1],o[2],u,l))[0],t=o[1],i.equ(u,l)&&(i.equ(s,t)||i.equ(t,i.sub(n,s))))return!0;if(i.equ(u,t))return!0;for(r=1;r<e;r++)if(t=i.mod(i.sub(i.mul(t,t),s),n),i.equ(u,t))return!0;return!1}function xt(n,t){var e,r,i,u=J.Arithmetic,l=u.O,s=u.II,o=bt();if(u.lt(n,o[0]))return!1;for(e=0,r=Q.min(o.length,100);e<r;e++){if(i=o[e],u.equ(n,i))return!0;if(u.equ(l,u.mod(n,i)))return!1}return!!pt(n,[s],t||null)&&yt(n)}function qt(n){var t,e,r,i=J.Arithmetic,u=i.O,l=bt();if(i.lt(n,l[0]))return!1;for(t=0,e=Q.min(l.length,50);t<e;t++){if(r=l[t],i.equ(n,r))return!0;if(i.equ(u,i.mod(n,r)))return!1}return pt(n,7)}function At(n){var t,e,r,i,u,l,s,o,m=J.Arithmetic,c=m.num,f=m.O,a=(m.I,m.II);if(At.wheel||(e=c(4),r=c(6),i=c(8),u=c(10),At.wheel={base:[a,c(3),c(5),c(7)],next:c(11),next2:c(121),inc:[a,e,a,e,r,a,r,e,a,e,r,r,a,r,e,a,r,e,r,i,e,a,e,a,e,i,r,e,r,a,e,r,a,r,r,e,a,e,r,a,r,e,a,e,a,u,a,u]}),r=At.wheel.base[1],e=At.wheel.base[2],u=At.wheel.base[3],m.lt(n,a))return!1;if(m.equ(n,a))return!0;if(m.equ(n,r))return!0;if(m.equ(n,e))return!0;if(m.equ(n,u))return!0;if(m.equ(f,m.mod(n,a))||m.equ(f,m.mod(n,r))||m.equ(f,m.mod(n,e))||m.equ(f,m.mod(n,u)))return!1;if(m.lt(n,At.wheel.next2))return!0;for(l=At.wheel.inc,s=0,o=At.wheel.next,t=mt(n);m.lte(o,t);){if(m.equ(f,m.mod(n,o)))return!1;o=m.add(o,l[s++]),s===l.length&&(s=0)}return!0}function It(n){var t=J.Arithmetic,e=t.num,r=t.II,i=t.digits(n).length;return i<=6?At(n):i<=20?t.lt(n,e(1373653))?pt(n,[r,e(3)]):t.lt(n,e("25326001"))?pt(n,[r,e(3),e(5)]):t.lt(n,e("25000000000"))?!t.equ(n,e("3215031751"))&&pt(n,[r,e(3),e(5),e(7)]):t.lt(n,e("2152302898747"))?pt(n,[r,e(3),e(5),e(7),e(11)]):t.lt(n,e("3474749660383"))?pt(n,[r,e(3),e(5),e(7),e(11),e(13)]):t.lt(n,e("341550071728321"))?pt(n,[r,e(3),e(5),e(7),e(11),e(13),e(17)]):xt(n,7):xt(n,7)}function Ot(t,n,e,r,i,u){var l,s,o,m,c,f,a,h=J.Arithmetic,d=h.O,g=h.I,_=h.II;if(h.lte(t,5))return h.equ(t,4)?_:t;for(null==n&&(n=_),null==e&&(e=g),null==r&&(r=5),f=h.sub(t,g),a=h.sub(t,3),r=+(r||0),i=i||null,u=u||null,l=n,o=0;o<=r;o++){for(s=l,m=0,Sn(u)||(u=function(n){return h.mod(h.add(h.mod(h.mul(n,n),t),e),t)});!(null!=i&&i<m);)if(m+=1,s=u(s),l=u(u(l)),c=Nt(h.sub(s,l),t),!h.equ(g,c)){if(h.equ(t,c))break;return c}l=h.rnd(d,f),e=h.rnd(g,a),u=null}return null}function wt(n){var t,e=J.Arithmetic,r=null;return Nn(n,Z)&&(r=n[X],n=n.num),t=e.digits(n).length<=20?function(n,t){var e,r,i,u,l,s,o,m,c,f,a=J.Arithmetic,h=a.num,d=a.O,g=a.I,_=a.II,v=bt();for(v.length||(v=[_,h(3)]),a.equ(v[v.length-1],_)&&v.push(h(3)),u=e=null,s=n,o=l=0,m=v.length;o<m;o++){if(c=v[o],a.equ(s,c))return[[c,g]];if(f=a.mul(c,c),a.gt(f,n)||null!=t&&a.gt(f,t))break;if(a.equ(d,a.mod(n,c))){for(i=g,n=a.div(n,c);a.equ(d,a.mod(n,c));)i=a.add(g,i),n=a.div(n,c);((r=new b([c,i])).l=u)&&(u.r=r),u=r,l++,e=e||u}}if(m<=o)for(c=a.add(c,_),f=a.mul(c,c);a.lte(f,n)&&(null==t||a.lte(f,t));){for(i=d;a.equ(d,a.mod(n,c));)i=a.add(g,i),n=a.div(n,c);a.lt(d,i)&&(((r=new b([c,i])).l=u)&&(u.r=r),u=r,l++,e=e||u),c=a.add(c,_),f=a.mul(c,c)}return null==t&&a.gt(n,g)&&(((r=new b([n,g])).l=u)&&(u.r=r),u=r,l++,e=e||u),h=Dn(l,function(){var n=e,t=n.v;return e=e.r,n.dispose(),e&&(e.l=null),t}),null==t?h:[h,n]}(n):(null==(t=Ot(n,e.II,e.I,5,100,null))&&(t=function(n,t,e,r){var i,u,l,s,o,m,c,f=J.Arithmetic,a=f.num,h=(f.O,f.I),d=f.II,g=bt(),_=g.length;if(null==r&&(r=0),null==e&&(e=d),null==t&&(t=a(10)),r=+r,f.lt(n,4)||f.lt(t,3))return null;for(m=f.sub(n,d),i=0;i<=r;i++){for(u=e,c=0;c<_&&(l=g[c],!f.gt(l,t));c++)s=vt(t,l),u=st(u,f.pow(l,s),n);if(o=Nt(f.sub(u,h),n),f.gt(o,h)&&f.lt(o,n))return o;e=f.rnd(d,m)}return null}(n,e.num(10),e.II,5)),null==t?[[n,e.I]]:function(n,t){for(var e=J.Arithmetic,r=0,i=0,u=n.length,l=t.length,s=0,o=new Array(u+l);r<u&&i<l;)e.equ(n[r][0],t[i][0])?(s&&e.equ(o[s-1][0],n[r][0])?o[s-1][1]=e.add(o[s-1][1],e.add(n[r][1],t[i][1])):o[s++]=[n[r][0],e.add(n[r][1],t[i][1])],r++,i++):e.lt(n[r][0],t[i][0])?(s&&e.equ(o[s-1][0],n[r][0])?o[s-1][1]=e.add(o[s-1][1],n[r][1]):o[s++]=n[r],r++):(s&&e.equ(o[s-1][0],t[i][0])?o[s-1][1]=e.add(o[s-1][1],t[i][1]):o[s++]=t[i],i++);for(;r<u;)s&&e.equ(o[s-1][0],n[r][0])?o[s-1][1]=e.add(o[s-1][1],n[r][1]):o[s++]=n[r],r++;for(;i<l;)s&&e.equ(o[s-1][0],t[i][0])?o[s-1][1]=e.add(o[s-1][1],t[i][1]):o[s++]=t[i],i++;return o.length>s&&(o.length=s),o}(wt(t),wt(e.div(n,t)))),r?t.map(function(n){return[new r(n[0]),new r(n[1])]}):t}function St(n,t){return n===t}function Ct(n,t,e){var r,i,u,l;for(e=e||St,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 Nt(){var n,t,e,r,i=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,u=i.length,l=J.Arithmetic,s=(l.num,l.O),o=l.I;if(0===u)return s;for(r=0;r<u&&l.equ(s,n=i[r++]););for(n=l.abs(n);r<u;){if(l.equ(n,o))return o;for(;r<u&&l.equ(s,t=i[r++]););if(t=l.abs(t),l.equ(t,o))return o;if(!l.equ(t,n)){if(l.equ(t,s))break;for(l.lt(n,t)&&(e=t,t=n,n=e);!l.equ(s,t);)e=t,t=l.mod(n,e),n=e}}return n}function Rt(n,t){var e=J.Arithmetic,r=(e.O,e.abs(n)),i=e.abs(t);return e.equ(r,i)?Gt(n)===Gt(t)?r:e.neg(r):e.mul(e.div(n,Nt(n,t)),t)}function Zt(n){var t,e,r=arguments.length&&(qn(n)||An(n))?n:arguments,i=r.length,u=J.Arithmetic,l=u.O;if(i<=1)return 1===i?r[0]:l;if(u.equ(l,r[0])||u.equ(l,r[1]))return l;for(e=Rt(r[0],r[1]),t=2;t<i;t++){if(u.equ(l,r[t]))return l;e=Rt(e,r[t])}return e}function Mt(n){var t,e,r,i,u=arguments.length&&(qn(n)||An(n))?n:arguments,l=u.length,s=J.Arithmetic,o=s.O,m=s.I,n=s.J,c=m,f=o,a=o,h=m,d=m,g=m;if(0!==l){if(t=u[0],s.gt(o,t)&&(t=s.abs(t),d=n),1===l)return[t,d];if(i=2===l?[u[1],m]:Mt(G.call(u,1)),e=i[0],s.gt(o,e)&&(e=s.abs(e),g=n),s.equ(o,t))return Dn(i.length+1,function(n){return 0===n?e:1===n?d:s.mul(g,i[n-1])});if(s.equ(o,e))return Dn(i.length+1,function(n){return 0===n?t:1===n?d:s.mul(g,i[n-1])});for(;;){if(r=s.div(t,e),t=s.mod(t,e),c=s.sub(c,s.mul(r,a)),f=s.sub(f,s.mul(r,h)),s.equ(o,t))return a=s.mul(a,d),h=s.mul(h,g),Dn(i.length+1,function(n){return 0===n?e:1===n?a:s.mul(h,i[n-1])});if(r=s.div(e,t),e=s.mod(e,t),a=s.sub(a,s.mul(r,c)),h=s.sub(h,s.mul(r,f)),s.equ(o,e))return c=s.mul(c,d),f=s.mul(f,g),Dn(i.length+1,function(n){return 0===n?t:1===n?c:s.mul(f,i[n-1])})}}}function Et(){var n,t,e,r,i,u=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,l=u.length,s=J.Arithmetic.O;if(0===l)return v.Zero();for(i=0;i<l&&(n=u[i++]).equ(s););for(;i<l;){for(;i<l&&(t=u[i++]).equ(s););if(!t.equ(n)){if(t.equ(s))break;for(t.norm().gt(n.norm())&&(e=t,t=n,n=e);!t.equ(s);)r=n.mod(t),n=t,t=r}}return n.real().abs().lt(n.imag().abs())&&(n=n.mul(v.Img())),n.real().lt(s)&&(n=n.neg()),n}function Dt(n,t){var e=J.Arithmetic.O,r=Et(n,t);return r.equ(e)?r:n.div(r).mul(t)}function Tt(){var n,t,e,r,i,u,l,s=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,o=s.length,m=J.Arithmetic,c=I,f=!0,a=m.O,h=m.I;m.J;if(0===o)return c.Zero();for(c=s[0][X],i=0;i<o;i++)if(!s[i].isConst()){f=!1;break}if(f)return c(s[0].ring.gcd(Dn(s.length,function(n){return s[n].cc()})),s[0].symbol,s[0].ring);if(Cn(s[0].ring.NumberClass,Z))return n=s[0],1==o?n.monic():(l=n.ring.associatedField(),u=c(n,n.symbol,l),m=c(2===o?s[1]:Tt(G.call(s,1)),n.symbol,l),c(Tt(u,m).primitive().mul(l.gcd(u.content(),m.content())),n.symbol,n.ring));for(i=0;i<o&&(n=s[i++]).equ(a););for(n.lc().lt(a)&&(n=n.neg());i<o;){if(n.equ(h))return c.One(n.symbol,n.ring);for(;i<o&&(t=s[i++]).equ(a););if(t.lc().lt(a)&&(t=t.neg()),t.equ(h))return c.One(n.symbol,n.ring);if(!t.equ(n)){if(t.equ(a))break;for(c.Term.cmp(n.ltm(),t.ltm(),!0)<0&&(e=t,t=n,n=e);!t.equ(a);)r=n.mod(t),n=t,t=r}}return n=n.monic()}function Pt(){var n,t,e,r,i,u,l,s,o,m,c,f,a,h,d,g=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,_=g.length,v=J.Arithmetic,b=I,p=!0,y=v.O;v.I;if(0!==_){for(r=g[0],b=r[X],n=0;n<_;n++)if(!g[n].isConst()){p=!1;break}if(p)return r.ring.xgcd(Dn(g.length,function(n){return g[n].cc()})).map(function(n){return b(n,r.symbol,r.ring)});if(Cn(r.ring.NumberClass,Z))return d=r.ring.associatedField(),t=d.One(),e=t,1==_?((m=r.lc()).divides(t)?(r=r.monic(),m.equ(r.lc())||(t=t.mul(r.lc()).div(m))):m.lt(y)&&(r=r.neg(),t=t.neg()),[r,b(t,r.symbol,d)]):(f=2===_?[g[1],b.One(r.symbol,d)]:Pt(G.call(g,1)),i=f[0],h=b(r,r.symbol,d),v=b(i,r.symbol,d),a=Pt(h,v),v=d.gcd(h.content(),v.content()),a[0]=a[0].primitive().mul(v),a[1]=a[1].mul(v),a[2]=a[2].mul(v),Dn(f.length+1,function(n){return 0===n?b(a[0],r.symbol,r.ring):1===n?a[1]:f[n-1].mul(a[2])}));if(t=r.ring.One(),e=t,1===_)return(m=r.lc()).divides(t)?(r=r.monic(),m.equ(r.lc())||(t=t.mul(r.lc()).div(m))):m.lt(y)&&(r=r.neg(),t=t.neg()),[r,b(t,r.symbol,r.ring)];if(f=2===_?[g[1],b.One(r.symbol,r.ring)]:Pt(G.call(g,1)),i=f[0],r.equ(y))return(m=i.lc()).divides(t)&&m.divides(e)?(i=i.monic(),m.equ(i.lc())||(t=t.mul(i.lc()).div(m),e=e.mul(i.lc()).div(m))):m.lt(y)&&(i=i.neg(),t=t.neg(),e=e.neg()),Dn(f.length+1,function(n){return 0===n?i:1===n?b(t,r.symbol,r.ring):f[n-1].mul(e)});if(i.equ(y))return(m=r.lc()).divides(t)&&m.divides(e)?(r=r.monic(),m.equ(r.lc())||(t=t.mul(r.lc()).div(m),e=e.mul(r.lc()).div(m))):m.lt(y)&&(r=r.neg(),t=t.neg(),e=e.neg()),Dn(f.length+1,function(n){return 0===n?r:1===n?b(t,r.symbol,r.ring):f[n-1].mul(e)});for(u=b.One(r.symbol,r.ring),l=b.Zero(r.symbol,r.ring),s=I.Zero(r.symbol,r.ring),o=I.One(r.symbol,r.ring);;){if(r=(c=r.divmod(i))[1],u=u.sub(c[0].mul(s)),l=l.sub(c[0].mul(o)),r.equ(y))return(m=i.lc()).divides(t)&&m.divides(e)?(i=i.monic(),m.equ(i.lc())||(t=t.mul(i.lc()).div(m),e=e.mul(i.lc()).div(m))):m.lt(y)&&(i=i.neg(),t=t.neg(),e=e.neg()),s=s.mul(t),o=o.mul(e),Dn(f.length+1,function(n){return 0===n?i:1===n?s:f[n-1].mul(o)});if(i=(c=i.divmod(r))[1],s=s.sub(c[0].mul(u)),o=o.sub(c[0].mul(l)),i.equ(y))return(m=r.lc()).divides(t)&&m.divides(e)?(r=r.monic(),m.equ(r.lc())||(t=t.mul(r.lc()).div(m),e=e.mul(r.lc()).div(m))):m.lt(y)&&(r=r.neg(),t=t.neg(),e=e.neg()),u=u.mul(t),l=l.mul(e),Dn(f.length+1,function(n){return 0===n?r:1===n?u:f[n-1].mul(l)})}}}function kt(n,t){var e=J.Arithmetic.O,r=Tt(n,t);return r.equ(e)?r:n.div(r).mul(t)}function $t(){var n,t,e=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,r=e.length,i=J.Arithmetic.O,u=I;if(r<=1)return 1===r?e[0]:u.Zero();if(u=e[0][X],e[0].equ(i)||e[1].equ(i))return u.Zero(e[0].symbol,e[0].ring);for(t=kt(e[0],e[1]),n=2;n<r;n++){if(e[n].equ(i))return u.Zero(e[0].symbol,e[0].ring);t=kt(t,e[n])}return t}function Lt(i,n){var t,u,l,s,o,r,m=J.Arithmetic,c=m.O,f=m.I,e=null,a=null,h=null,d=0,g=0,_=null;if(Nn(i,Z)&&(_=i[X],i=i.num),i=m.abs(i),!0===n)return m.gte(i,1e4)?(r=wt(i),L(r.map(function(n){return m.val(n[1])+1})).mapTo(function(n){n=n.reduce(function(n,t,e){return 0===t?n:m.mul(n,m.pow(r[e][0],t))},f);return _?new _(n):n})):(u=mt(i),l=f,o=null,D(function(n,t,e,r){if(t<0)return null;if(r)return l=f,m.equ(f,i)||(o=i),_?new _(f):f;if(o)return n=o,o=null,_?new _(n):n;for(l=m.add(l,f);m.lte(l,u);){if(m.equ(c,m.mod(i,l)))return s=m.div(i,l),m.equ(s,l)||(o=s),_?new _(l):l;l=m.add(l,f)}return null}));for(u=mt(i),l=f;m.lte(l,u);l=m.add(l,f))m.equ(c,m.mod(i,l))&&(s=m.div(i,l),m.equ(s,l)?(t=new b(l,h,null),d++,h&&(h.r=t),h=t):(t=new b(l,h,null),d++,h&&(h.r=t),h=t,t=new b(s,null,a),g++,a&&(a.l=t),a=t),e=e||h);return h&&(h.r=a)&&(a.l=h),a=h=null,Dn(d+g,function(){var n=e,t=n.v;return e=n.r,n.dispose(),e&&(e.l=null),_?new _(t):t})}function jt(n){for(var t=J.Arithmetic,e=(t.num,t.O),r=t.I,i=(t.II,wt(n)),u=i.length,l=0;l<u;l++)if(t.lt(r,i[l][1]))return e;return 1&u?r:t.J}function Ut(n,t,e){for(var r=(e=e||J.DefaultArithmetic).O,i=Q.min(n.length,t.length),u=0;u<i;u++)r=Nn(r,_)?Nn(n[u],_)?r.add(n[u].mul(t[u])):Nn(t[u],_)?r.add(t[u].mul(n[u])):r.add(e.mul(n[u],t[u])):Nn(n[u],_)?n[u].mul(t[u]).add(r):Nn(t[u],_)?t[u].mul(n[u]).add(r):e.add(r,e.mul(n[u],t[u]));return r}function Jt(n,t){var e,r,i=t.length;if(!i)return-1;for(r=Nn(n,_)?function(n,t){return n.equ(t)}:function(n,t){return n===t},e=0;e<i;e++)if(r(n,t[e]))return e;return-1}function Qt(n,t,e){var r,i=J.Arithmetic,u=i.O,l=i.I,s=Nt(n);return i.equ(u,i.mod(t,s))?(i.equ(l,s)||(n=[i.div(n[0],s),i.div(n[1],s)],t=i.div(t,s)),r=i.equ(t,u)?[u,u]:(r=Mt(n),[i.mul(t,r[1]),i.mul(t,r[2])]),i.gt(u,n[1])&&(n[0]=i.neg(n[0]),n[1]=i.neg(n[1])),n=[n[1],i.neg(n[0])],[N(r[0],C(S(e),n[0])),N(r[1],C(S(e),n[1]))]):null}function Ft(e,r,n,t){var i,u,l,s,o,m,c,f,a,h,d,g,_,v,b,p,y,x,q=J.Arithmetic,A=q.O,I=(q.I,e.length),O=[],w=On(n)&&n.length?n:"i";if(!I)return null;if(i=(e=e.filter(function(n,t){n=!q.equ(A,n);return n&&O.push(t),n})).length,x=[],0===i)s=0,p=q.equ(A,r)?Dn(I,function(n){var t=w+"_"+ ++s;return x.push(t),N(C(S(t)))}):null;else if(1===i)s=0,p=q.equ(A,q.mod(r,e[0]))?Dn(I,function(n){var t;return 1<I&&n!==O[0]&&(t=w+"_"+ ++s,x.push(t)),n===O[0]?N(q.div(r,e[0])):N(C(S(t)))}):null;else if(2===i)_=Qt(e,r,w+"_1"),s=l=0,_&&x.push(w+"_1"),p=null==_?null:Dn(I,function(n){return l<O.length&&n===O[l]?_[++l-1]:(n=w+"_"+(O.length+s++),x.push(n),N(C(S(n))))});else{for(g=[Nt(e[i-2],e[i-1])],e[i-2]=q.div(e[i-2],g[0]),e[i-1]=q.div(e[i-1],g[0]),o=i-3;0<o;o--)u=Nt(g[0],e[o]),g[0]=q.div(g[0],u),e[o]=q.div(e[o],u),g.unshift(u);for(g.push(e[i-1]),p=[],y=Dn(i,function(n){return w+"_"+(n+1)}),r=N(r),o=0,a=g.length;o<a;o++){for(v=[],b=[],m=0,c=(h=r.symbols()).length;m<c;m++){if(f=r.terms[h[m]].c().real().num,d="1"===h[m]?(l="1",y[0]):(l=h[m],y[y.indexOf(l)+1]),null==(_=Qt([e[o],g[o]],f,d)))return null;"1"!==l&&(_[0]=N(C(S(l),_[0].c()),_[0].terms[d]),_[1]=N(C(S(l),_[1].c()),_[1].terms[d])),-1===x.indexOf(d)&&x.push(d),v.push(_[0]),b.push(_[1])}p.push(N(v)),r=N(b)}p.push(r),s=l=0,p=Dn(I,function(n){return l<O.length&&n===O[l]?p[++l-1]:(n=w+"_"+(O.length+s++),x.push(n),N(C(S(n))))})}return p=null==p?null:!1===n?p.map(function(n){return n.c().real().num}):p,x.symbol=w,null==p?null:!0===t?[p,x]:p}function Xt(t,n,e,r){var i,u,l,s,o,m,c,f,a,h,d,g,_=M.Z(),v=_.Zero(),b=_.One(),p=null,y=On(e)&&e.length?e:"i";if(Nn(t,E)&&Cn(t.ring.NumberClass,Z)||(t=E(_,t)),!(i=t.nr))return null;if(!(u=t.nc))return null;for(Nn(n,E)&&(n=n.col(0)),i>(n=_.cast(n)).length&&(n=n.concat(Dn(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<u;f++)if(o<=f)g[f-o]=y+"_"+(f-o+1),d[f]=N(C(S(g[f-o]),b));else{for(h=v,a=0;a<f;a++)h=h.add(m.val[f][a].mul(d[a].c().real().num));if(d[f]=n[f].sub(h),m.val[f][f].equ(v)){if(!d[f].equ(v))return null;d[f]=N(C(S(y+"_"+(f+1)),b))}else{if(!m.val[f][f].divides(d[f]))return null;d[f]=N(d[f].div(m.val[f][f]))}}for(p=Dn(u,function(t){return N(Dn(u,function(n){return d[n].mul(c.val[t][n])}))}),f=u;f<i;f++)if(!N(p.map(function(n){return n.mul(t.val[f][a])})).equ(n[f]))return null;return p=null==p?null:!1===e?p.map(function(n){return n.c().real().num}):p,g.symbol=y,null==p?null:!0===r?[p,g]:p}function Gt(n){var t=J.Arithmetic,e=t.O;return Nn(n,_)?n.equ(e)?0:n.lt(e)?-1:1:t.equ(e,n)?0:t.gt(e,n)?-1:1}function zt(n,t,e){var r,i,u=J.Arithmetic,l=u.add,s=u.O,o=u.I,u=s,s=String(n)+","+String(t)+","+String(null==e?null:t-e);if(null==zt.mem[s]){if(null==e){for(r=o,i=0;i<t;i++)r=l(r,Vt(n-i-1));u=l(u,r),zt.mem[s]=u}else if(t===e+1)u=l(u,o),zt.mem[s]=u;else if(e+1<t){for(r=o,i=e+1;i<t;i++)r=l(r,Vt(n-i-1));u=l(u,r),zt.mem[s]=u}}else u=zt.mem[s];return u}function Wt(n,t){var e=J.Arithmetic;return t<n&&0<=t?e.shl(e.I,t):e.O}function Vt(n){if(Nn(n,Z))return new n[X](Vt(n.num));if(Nn(n,p))return new n[X](Vt(n.num),Vt(n.den));var t=J.Arithmetic;return t.shl(t.I,t.num(n))}function Bt(n,t){var e=J.Arithmetic,r=e.num;return t=Nn(t,Z)?t.num:r(t),Nn(n,Z)?new n[X](Bt(n.num,t)):Nn(n,p)?new n[X](Bt(n.num,t),Bt(n.den,t)):e.pow(r(n),t)}function Ht(t){var n,e,r,f=J.Arithmetic,a=f.O,h=f.I,d=f.II,g=f.num(3),i=function(t,n){var e,r,i,u,l,s,o,m,c;if(f.lt(t,4))return[h,h,h,g][f.val(t)];for(e=Kn(n,f.add(h,mt(t)),-1,null,null,f.lt),r=Kn(n,f.add(h,f.div(t,g)),-1,null,null,f.lt),i=Kn(n,f.add(h,f.div(t,d)),-1,null,null,f.lt),u=Kn(n,f.add(h,t),-1,null,null,f.lt),l=n.slice(i,u).concat(n.slice(e,r).filter(function(n){return f.equ(h,f.mod(f.div(t,n),d))})),c=1;c<e;c++){for(s=n[c],o=h,m=t;m=f.div(m,s),!f.equ(a,m);)f.equ(a,f.mod(m,d))||(o=f.mul(o,s));f.gt(o,h)&&l.push(o)}return function n(t,e,r){var i=J.Arithmetic;if(r<e)return i.I;if(e===r)return t[e];var u=e+r>>>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=$()).get(function(n){return f.lte(n,t)}),r.dispose(),f.mul(u(t,e),Vt(n)))}function Kt(e,n){var t,r,i,u=J.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=J.Options.MAXMEM;if(Nn(e,Z))return new e[X](Kt(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 Ht(e);t=String(e),null==Kt.mem1[t]?(v=g(Kt(h(e,s)),e),u.lt(e,b)&&(Kt.mem1[t]=v)):v=Kt.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==Kt.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(Kt(e,r),Kt(h(e,r))))),i=u.neg(i);else v=a(u.equ(l,_(e,m))?s:o,g(Kt(h(e,s),!1),e));u.lt(e,b)&&(Kt.mem2[t]=v)}else v=Kt.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==Kt.mem2[t]?(v=a(Kt(h(e,s),!0),g(Kt(h(e,m),!0),h(e,s))),u.lt(e,b)&&(Kt.mem2[t]=v)):v=Kt.mem2[t]}else if(qn(n)){if(!n.length)return u.lt(e,l)?l:Kt(e);if(u.lt(e,l))return l;if(qn(n[0])){if(!(n=n[0]).length)return u.lt(e,l)?l:Kt(e);if(1===n.length)return Kt(e,n[0]);if(v=En(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)+"@"+Wn(n.map(String),1,!0).join(",")+"@",null==Kt.mem3[t]){for(r=h(v,s),v=s;u.gte(r,l);)v=g(v,h(e,r)),r=h(r,s);v=En(function(n,t){return d(n,Kt(t))},v,n),u.lt(e,b)&&(Kt.mem3[t]=v)}else v=Kt.mem3[t]}else t=String(e)+"@"+Wn(n.map(String),1,!0).join(","),null==Kt.mem3[t]?(v=En(function(n,t){return d(n,Kt(t))},Kt(e),n),u.lt(e,b)&&(Kt.mem3[t]=v)):v=Kt.mem3[t]}else if(u.isNumber(n)||Nn(n,Z))if(n=Nn(n,Z)?n.num:c(n),u.lt(n,l)){if(u.lte(e,u.neg(n)))return u.equ(e,u.neg(n))?Kt(e):l;if(t=String(e)+"@"+String(n),null==Kt.mem3[t]){if(r=a(e,n),u.gt(h(e,r),500))v=d(Kt(e),Kt(r));else for(v=r=a(r,s);u.lt(r,e);)v=g(v,r=a(r,s));u.lt(e,b)&&(Kt.mem3[t]=v)}else v=Kt.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==Kt.mem3[t]){if(u.lte(e,20))v=a(Kt(h(e,s),h(n,s)),Kt(h(e,s),n));else if(u.isDefault())v=Q.round(En(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(Kt(e),g(Kt(n),Kt(r)));else{for(v=r=a(r,s);u.lt(r,e);)v=g(v,r=a(r,s));v=d(v,Kt(n))}u.lt(e,b)&&(Kt.mem3[t]=v)}else v=Kt.mem3[t]}return v}function Yt(n,t){var e,r,i,u,l=J.Arithmetic,s=l.O,o=l.I,m=(l.J,l.num),c=l.add,f=l.sub,a=l.mul,h=J.Options.MAXMEM;if(Nn(n,Z))return new n[X](Yt(n.num,t));if(n=m(n),t=Nn(t,Z)?t.num:m(t),l.lt(n,s)||l.lt(t,s)||l.gt(t,n))return s;if(l.equ(t,s))return Kt(n);if(l.equ(t,n))return Kt(n,!1);if(m=String(n)+","+String(t),null==Yt.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(Kt(u,r),Kt(c(t,r),!1)));else for(i=o,r=s;l.lte(r,t);r=c(r,o))e=c(e,a(i,a(Kt(t,r),Kt(f(n,r))))),i=l.neg(i);l.lt(n,h)&&(Yt.mem[m]=e)}else e=Yt.mem[m];return e}function ne(n,t,e,r,i){for(var u=J.Arithmetic,l=u.O,s=0;s<t;s++)e===s||0<=i[s]&&i[s]<e||(l=u.add(l,Yt(n-e-1,r+(e<t&&s<e))));return l}function te(n,t,e){var r,i=J.Arithmetic,u=i.O,l=i.I,s=i.add,o=i.sub,m=i.mul,c=u,f=J.Options.MAXMEM;if(Nn(n,Z))return new n[X](te(n.num,Nn(t,Z)?t.num:t,e));if(Nn(t,Z)&&(t=t.num),n=i.num(n),t=i.num(t),e=+e,i.lt(n,u)||i.lt(t,u))return u;if(2===e){if(i.equ(n,t)||i.equ(t,l)&&i.lt(n,u))return l;if(i.equ(n,u)||i.equ(t,u))return u;r=String(n)+","+String(t),null==te.mem2[r]?(c=s(te(o(n,l),o(t,l),2),m(te(o(n,l),t,2),t)),i.lt(n,f)&&(te.mem2[r]=c)):c=te.mem2[r]}else if(-1===e){if(i.gt(t,n)||i.equ(t,u)&&i.lt(n,u))return u;if(i.equ(n,t))return l;r=String(n)+","+String(t)+"-",null==te.mem1[r]?(c=s(te(o(n,l),o(t,l),-1),m(te(o(n,l),t,-1),o(l,n))),i.lt(n,f)&&(te.mem1[r]=c)):c=te.mem1[r]}else{if(i.gt(t,n)||i.equ(t,u)&&i.lt(n,u))return u;if(i.equ(n,t))return l;if(i.equ(t,l))return Kt(o(n,l));c=i.equ(u,i.mod(o(n,t),i.II))?te(n,t,-1):i.neg(te(n,t,-1))}return c}function ee(n,t,e,r){var i,u,l=J.Arithmetic,s=l.O,o=l.I,m=(l.II,l.add),c=l.sub,f=l.mul,a=s;if(l.lt(n,s)||l.lte(t,s)||l.lte(e,s)||l.gt(e,r)||l.gt(f(t,e),n)||l.lt(f(t,r),n))return a;if(l.gt(e,o)&&(n=c(n,f(t,c(e,o))),r=m(c(r,e),o),e=o),l.equ(t,o))return l.lte(e,n)&&l.lte(n,r)?o:a;if(l.equ(n,t))return l.lte(e,o)&&l.gte(r,o)?o:a;if(l.equ(e,r))return l.equ(f(t,e),n)?o:a;if(l.equ(m(e,o),r))return l.lte(c(n,f(t,e)),t)?o:a;if(e=String(n)+","+String(t)+","+String(e)+","+String(r),null==ee.mem[e]){for(i=l.max(o,l.divceil(n,t)),t=c(t,o),u=l.min(r,c(n,t));l.lte(i,u);)a=m(a,ee(c(n,i),t,o,i)),i=m(i,o);ee.mem[e]=a}return ee.mem[e]}function re(n,t,e,r,i){if(Nn(n,Z))return new n[X](re(n.num,t,e,r,i));var u=J.Arithmetic,l=u.num,s=u.O,o=u.I,m=s,c=u.add,r=u.sub;u.div,u.mod;if(Nn(t,Z)&&(t=t.num),Nn(e,Z)&&(e=e.num),s=String(n)+","+String(t)+","+String(e)+","+String(i),null==re.mem[s]){if(n=l(n),t=r(l(t),o),e=null==e?o:l(e),null==i)for(i=o;u.lte(i,n);)m=c(m,ee(n,i,e,t)),i=c(i,o);else m=ee(n,l(i),e,t);re.mem[s]=m}return re.mem[s]}function ie(n,t,e,r){if(Nn(n,Z))return new n[X](ie(n.num,t,e,r));var i,u,l,s,o=J.Arithmetic,m=o.num,c=o.O,f=o.I,a=o.II,h=o.add,d=o.sub,g=o.mul,_=o.mod,v=c;if(Nn(t,Z)&&(t=t.num),Nn(e,Z)&&(e=e.num),Nn(r,Z)&&(r=r.num),t=null==t?null:o.abs(m(t)),e=null==e?null:o.abs(m(e)),r=null==r?null:o.abs(m(r)),n=m(n),m=null!=t?t:f,i=null!=t?t:n,l=null!=r?r:f,s=null!=e?e:n,o.equ(n,c))return null!=t&&!o.gt(t,c)||null!=e&&!o.equ(e,c)||null!=r&&!o.equ(r,c)?c:f;if(o.lt(n,c)||null!=t&&null!=e&&null!=r&&(o.gte(c,t)||o.gte(c,r)||o.gte(c,e)||o.gt(r,e)||o.gt(h(g(t,r),e),h(n,r))||o.lt(h(g(t,e),r),h(n,e)))||null!=e&&null!=r&&(o.gte(c,r)||o.gte(c,e)||o.gt(r,e)||o.gt(e,n)||o.gt(r,n)||o.equ(e,r)&&!o.equ(c,_(n,e))||!o.equ(e,r)&&(o.gt(h(e,r),n)||o.lt(h(e,r),n)&&o.lt(d(n,h(e,r)),r)))||null!=t&&null!=r&&(o.gte(c,t)||o.gte(c,r)||o.gt(g(t,r),n))||null!=t&&null!=e&&(o.gte(c,t)||o.gte(c,e)||o.gt(h(t,e),h(n,f))||o.lt(g(t,e),n))||null!=e&&(o.gte(c,e)||o.gt(e,n))||null!=r&&(o.gte(c,r)||o.gt(r,n)||o.lt(r,n)&&o.gt(h(r,r),n))||null!=t&&(o.gte(c,t)||o.gt(t,n)))return v;if(null!=e&&null==t&&null==r&&(s=n,t=i=m=e,e=null),g=String(n)+"|"+String(t)+"|"+String(e)+"|"+String(r),null==ie.mem[g]){if(null!=e&&null!=r){if(n=o.equ(e,r)?d(n,e):d(n,h(e,r)),o.equ(c,n)&&(null==t||o.equ(m,o.equ(e,r)?f:a)))return f;null!=t&&(i=d(i,a),m=d(m,a))}else if(null!=r){if(n=d(n,r),o.equ(c,n)&&(null==t||o.equ(m,f)))return f;null!=t&&(i=d(i,f),m=d(m,f))}else if(null!=e){if(n=d(n,e),o.equ(c,n)&&(null==t||o.equ(m,f)))return f;null!=t&&(i=d(i,f),m=d(m,f))}for(u=m;o.lte(u,i);)v=h(v,ee(n,u,l,s)),u=h(u,f);ie.mem[g]=v}return ie.mem[g]}function ue(n,t,e,r){var i,u,l=J.Arithmetic,s=l.add,o=l.sub,m=l.mul,c=l.O,f=l.I,a=c;if(l.lt(n,c)||l.lte(t,c)||l.lte(e,c)||l.gt(e,r)||l.gt(m(t,e),n)||l.lt(m(t,r),n))return a;if(l.gt(e,f)&&(n=o(n,m(t,o(e,f))),r=s(o(r,e),f),e=f),l.equ(t,f))return l.lte(e,n)&&l.gte(r,n)?f:a;if(l.equ(n,t))return l.lte(e,f)&&l.gte(r,f)?f:a;if(l.equ(e,r))return l.equ(m(t,e),n)?f:a;if(l.equ(n,r))return Kt(s(o(n,m(t,e)),o(t,f)),o(t,f));if(l.equ(s(e,f),r))return Kt(t,o(n,m(t,e)));if(m=String(n)+","+String(t)+","+String(e)+","+String(r),null==ue.mem[m]){for(u=o(n,e),i=l.max(f,o(n,r)),t=o(t,f);l.lte(i,u);)a=s(a,ue(i,t,e,r)),i=s(i,f);ue.mem[m]=a}return ue.mem[m]}function le(n,t,e,r,i,u,l){if(Nn(n,Z))return new n[X](le(n.num,t,e,r,i,u,l));var s,o,m,c,f,a,h,d,g,_,v,b,p,y,x=J.Arithmetic,q=x.num,A=x.O,I=x.I,O=(x.II,A),w=x.add,S=x.sub,C=x.mul,N=x.div,R=(x.divceil,x.mod);if(Nn(t,Z)&&(t=t.num),Nn(e,Z)&&(e=e.num),Nn(r,Z)&&(r=r.num),s=String(n)+","+String(t)+","+String(e)+","+String(r)+","+String(i)+","+String(0<u)+","+String(0<l),null==le.mem[s]){if(n=q(n),t=q(t),m=null==r?n:q(r),o=null==e?I:q(e),null==e&&null==r)if(x.gt(n,I)&&Vt(S(n,I)),null==i)for(h=o;x.lt(h,t);)a=S(n,h),O=w(O,x.gte(a,I)?Vt(S(a,I)):A),h=w(h,I);else for(h=o,i=S(q(i),I);x.lt(h,t);)O=w(O,ue(S(n,h),i,o,m)),h=w(h,I);else if(0<u&&0<l||0<u&&null==r||0<l&&null==e)if(null==i)for(h=o;x.lt(h,t);){for(a=S(n,h),i=I;x.lte(i,a);)O=w(O,ue(a,i,o,m)),i=w(i,I);h=w(h,I)}else for(h=o,i=S(q(i),I);x.lt(h,t);)O=w(O,ue(S(n,h),i,o,m)),h=w(h,I);else if(null!=r&&(0<u||null==e))if(null==i)for(h=o,g=S(m,I);x.lt(h,t);){if(a=S(n,h),x.equ(m,a))O=w(O,I);else for(x.equ(A,R(a,m))&&(O=w(O,I)),f=I,d=m;x.lte(d,a);){for(c=I,i=S(a,d);x.lte(c,i);)y=ue(i,c,o,g),x.equ(A,y)||(O=w(O,C(y,Kt(w(c,f),f)))),c=w(c,I);d=w(d,m),f=w(f,I)}h=w(h,I)}else for(h=o,i=S(q(i),I),g=S(m,I);x.lt(h,t);){if(a=S(n,h),x.equ(C(i,m),a))O=w(O,I);else for(f=I,d=m;x.lte(d,a)&&x.lte(f,i);)y=ue(S(a,d),S(i,f),o,g),x.equ(A,y)||(O=w(O,C(y,Kt(i,f)))),d=w(d,m),f=w(f,I);h=w(h,I)}else if(null!=e&&(0<l||null==r))if(null==i)for(_=w(h=o,I);x.lt(h,t);){if(a=S(n,h),x.equ(o,a))O=w(O,I);else for(x.equ(A,R(a,o))&&(O=w(O,I)),d=x.equ(o,h)?f=A:(f=I,o);x.lte(d,a);){for(c=I,i=N(v=S(a,d),o);x.lte(c,i);)y=ue(v,c,_,m),x.equ(A,y)||(O=w(O,C(y,Kt(w(c,f),f)))),c=w(c,I);d=w(d,o),f=w(f,I)}h=w(h,I)}else for(h=o,i=S(q(i),I),_=w(o,I);x.lt(h,t);){if(a=S(n,h),x.equ(C(i,o),a))O=w(O,I);else for(d=x.equ(o,h)?f=A:(f=I,o);x.lte(d,a)&&x.lte(f,i);)y=ue(S(a,d),S(i,f),_,m),x.equ(A,y)||(O=w(O,C(y,Kt(i,f)))),d=w(d,o),f=w(f,I);h=w(h,I)}else if(null==i)for(v=w(h=o,I),b=S(m,I);x.lt(h,t);){if(a=S(n,h),x.equ(m,o))O=w(O,x.equ(A,R(a,m))?I:A);else for(g=x.max(I,N(a,m)),_=x.max(I,N(a,o)),f=I;x.lte(f,g);){for(c=x.equ(o,h)?A:I;x.lte(c,_);){if(d=S(a,w(C(f,m),C(c,o))),x.equ(A,d))O=w(O,Kt(w(f,c),[f,c]));else{if(!x.gt(d,A))break;for(p=I,i=N(d,o);x.lte(p,i);)y=ue(d,p,v,b),x.equ(A,y)||(O=w(O,C(y,Kt(w(p,w(f,c)),[[f,c]])))),p=w(p,I)}c=w(c,I)}f=w(f,I)}h=w(h,I)}else for(h=o,i=S(q(i),I),v=w(o,I),b=S(m,I);x.lt(h,t);){if(a=S(n,h),x.equ(m,o))O=w(O,x.equ(C(i,m),a)?I:A);else for(g=x.max(I,N(a,m)),_=x.max(I,N(a,o)),f=I;x.lte(f,g);){for(c=x.equ(o,h)?A:I;x.lte(c,_);){if(p=S(i,w(f,c)),d=S(a,w(C(f,m),C(c,o))),x.equ(A,d)&&x.equ(A,p))O=w(O,Kt(i,[f,c]));else{if(!x.gt(p,A)||!x.gt(d,A))break;y=ue(d,p,v,b),x.equ(A,y)||(O=w(O,C(y,Kt(i,[[f,c]]))))}c=w(c,I)}f=w(f,I)}h=w(h,I)}le.mem[s]=O}return le.mem[s]}function se(n,t,e,r){if(Nn(n,Z))return new n[X](se(n.num,t,e,r));var i,u,l,s,o,m,c,f,a,h=J.Arithmetic,d=h.num,g=h.O,_=h.I,v=(h.II,h.add),b=h.sub,p=h.mul,y=h.div,x=h.mod,q=g;if(Nn(t,Z)&&(t=t.num),Nn(e,Z)&&(e=e.num),Nn(r,Z)&&(r=r.num),t=null==t?null:h.abs(d(t)),e=null==e?null:h.abs(d(e)),r=null==r?null:h.abs(d(r)),n=d(n),h.equ(n,g))return null!=t&&!h.gt(t,g)||null!=e&&!h.equ(e,g)||null!=r&&!h.equ(r,g)?g:_;if(h.lt(n,g)||null!=t&&null!=e&&null!=r&&(h.gte(g,t)||h.gte(g,r)||h.gte(g,e)||h.gt(r,e)||h.gt(v(p(t,r),e),v(n,r))||h.lt(v(p(t,e),r),v(n,e)))||null!=e&&null!=r&&(h.gte(g,r)||h.gte(g,e)||h.gt(r,e)||h.gt(e,n)||h.gt(r,n)||h.equ(e,r)&&!h.equ(g,x(n,e))||!h.equ(e,r)&&(h.gt(v(e,r),n)||h.lt(v(e,r),n)&&h.lt(b(n,v(e,r)),r)))||null!=t&&null!=r&&(h.gte(g,t)||h.gte(g,r)||h.gt(p(t,r),n))||null!=t&&null!=e&&(h.gte(g,t)||h.gte(g,e)||h.gt(v(t,e),v(n,_))||h.lt(p(t,e),n))||null!=e&&(h.gte(g,e)||h.gt(e,n))||null!=r&&(h.gte(g,r)||h.gt(r,n)||h.lt(r,n)&&h.gt(v(r,r),n))||null!=t&&(h.gte(g,t)||h.gt(t,n)))return q;if(d=String(n)+"|"+String(t)+"|"+String(e)+"|"+String(r),null==se.mem[d]){if(null!=t&&null!=e&&null!=r)if(h.equ(e,r))q=h.equ(p(t,e),n)?_:g;else for(m=h.max(_,y(n,e)),c=h.max(_,y(n,r)),s=v(r,_),o=b(e,_),i=_;h.lte(i,m);){for(u=_;h.lte(u,c);){if(l=b(t,v(i,u)),a=b(n,v(p(i,e),p(u,r))),h.equ(g,a)&&h.equ(g,l))q=v(q,Kt(t,[i,u]));else{if(!h.gt(l,g)||!h.gt(a,g))break;f=ue(a,l,s,o),h.equ(g,f)||(q=v(q,p(f,Kt(t,[[u,i]]))))}u=v(u,_)}i=v(i,_)}else if(null!=r&&null!=e)if(h.equ(e,r))q=h.equ(g,x(n,e))?_:g;else for(m=h.max(_,y(n,e)),c=h.max(_,y(n,r)),s=v(r,_),o=b(e,_),i=_;h.lte(i,m);){for(u=_;h.lte(u,c);){if(a=b(n,v(p(i,e),p(u,r))),h.equ(g,a))q=v(q,Kt(v(i,u),[i,u]));else{if(!h.gt(a,g))break;for(l=_,t=y(a,r);h.lte(l,t);)f=ue(a,l,s,o),h.equ(g,f)||(q=v(q,p(f,Kt(v(l,v(i,u)),[[i,u]])))),l=v(l,_)}u=v(u,_)}i=v(i,_)}else if(null!=t&&null!=r)if(h.equ(p(t,r),n))q=_;else for(c=v(a=r,i=_);h.lte(a,n)&&h.lte(i,t);)f=ue(b(n,a),b(t,i),c,n),h.equ(g,f)||(q=v(q,p(f,Kt(t,i)))),a=v(a,r),i=v(i,_);else if(null!=t&&null!=e)if(h.equ(p(t,e),n))q=_;else for(m=b(a=e,i=_);h.lte(a,n)&&h.lte(i,t);)f=ue(b(n,a),b(t,i),_,m),h.equ(g,f)||(q=v(q,p(f,Kt(t,i)))),a=v(a,e),i=v(i,_);else if(null!=t)q=ue(n,t,_,n);else if(null!=r)if(h.equ(r,n))q=_;else for(h.equ(g,x(n,r))&&(q=_),c=v(a=r,i=_);h.lte(a,n);){for(l=_,t=y(s=b(n,a),r);h.lte(l,t);)f=ue(s,l,c,n),h.equ(g,f)||(q=v(q,p(f,Kt(v(l,i),i)))),l=v(l,_);a=v(a,r),i=v(i,_)}else if(null!=e)if(h.equ(e,n))q=_;else for(h.equ(g,x(n,e))&&(q=_),m=b(a=e,i=_);h.lte(a,n);){for(l=_,t=b(n,a);h.lte(l,t);)f=ue(t,l,_,m),h.equ(g,f)||(q=v(q,p(f,Kt(v(l,i),i)))),l=v(l,_);a=v(a,e),i=v(i,_)}else q=h.gt(n,_)?Vt(b(n,_)):_;se.mem[d]=q}return se.mem[d]}function oe(n){var t=J.Arithmetic,e=t.O,r=t.I,i=t.II,u=t.num,l=t.val,s=t.add,o=t.sub,m=t.div,c=t.mul,f=e,a=J.Options.MAXMEM;return Nn(n,Z)?new n[X](oe(n.num)):(n=u(n),t.lte(n,17)?t.lt(n,e)?e:u([1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845,35357670,129644790][l(n)]):(l=String(n),null==oe.mem[l]?t.lt(n,a)?(f=m(c(oe(o(n,r)),o(c(n,4),i)),s(n,r)),oe.mem[l]=f):f=m(Kt(c(n,i),n),s(n,r)):f=oe.mem[l],f))}function me(n){var t,e=J.Arithmetic,r=e.O,i=e.I,u=e.num,l=e.val,s=e.add,o=e.sub,m=e.mul,c=r,f=J.Options.MAXMEM;if(Nn(n,Z))return new n[X](me(n.num));if(n=u(n),e.lte(n,14))return e.lt(n,r)?r:u([1,1,2,5,15,52,203,877,4140,21147,115975,678570,4213597,27644437,190899322][l(n)]);if(l=String(n),null==me.mem[l]){for(t=c=r,n=o(n,i);e.lte(t,n);)c=s(c,m(Kt(n,t),me(t))),t=s(t,i);e.lt(n,f)&&(me.mem[l]=c)}else c=me.mem[l];return c}function ce(n){var t=J.Arithmetic,e=t.O,r=t.I,i=t.II,u=t.num,l=t.val,s=e,o=J.Options.MAXMEM;return Nn(n,Z)?new n[X](ce(n.num)):(n=u(n),t.lte(n,36)?t.lt(n,e)?e:u([0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352][l(n)]):(u=String(n),null==ce.mem[u]?(l=t.div(n,i),r=ce(t.add(l,r)),l=ce(l),s=t.equ(e,t.mod(n,i))?t.mul(l,t.sub(t.mul(r,t.II),l)):t.add(t.mul(r,r),t.mul(l,l)),t.lt(n,o)&&(ce.mem[u]=s)):s=ce.mem[u],s))}function fe(){var n,t,e,r,i,u,l,s,o,m,c,f=arguments,a=f.length;if(!a)return[];if(!0===f[0]){for(m=f[1].length,n=2;n<a;n++)m*=f[n].length;for(c=new Array(m),n=0;n<m;n++){for(s=0,e=n,t=u=1;t<a;t++)i=e%(r=f[t].length),e=~~(e/r),s+=u*(l=f[t][i]),u*=r;c[n]=s}}else{for(m=f[0].length,n=1;n<a;n++)m*=f[n].length;for(c=new Array(m),n=0;n<m;n++){for(s=new Array(a),o=0,e=n,t=a-1;0<=t;t--)if(i=e%(r=f[t].length),e=~~(e/r),qn(l=f[t][i])||An(l))for(u=l.length-1;0<=u;u--)s[a-++o]=l[u];else s[a-++o]=l;c[n]=s}}return c}function ae(n,t,e){var r,i,u,l,s,o,m,c,f,a,h,d,g,_,v,b,p,y,x,q,A,I,O,w,S,C=n.length,N=null,R=null;if(!C)return[];for(e=!!Sn(e)&&(R=e,!0),ln!==t&&sn!==t&&on!==t&&mn!==t&&cn!==t&&fn!==t&&(t=!1),y=new Array(C),x=[],p=[],i=1,r=0;r<C;r++)if(Sn(n[r][0]))if(n[r][1].length)for(w=0,S=n[r][1].length;w<S;w++)null==y[n[r][1][w]]?y[n[r][1][w]]=[[n[r][0],r,n[r][1]]]:y[n[r][1][w]].push([n[r][0],r,n[r][1]]);else x.push([n[r][0],r]);else if(p.push(r),!(i*=n[r].length)||i<=0)return[];if(!p.length)return[];for(v=new Array(i),_=0,d=C-1,A=p.length-1,r=0;r<i;r++){for(a=new Array(C),I=!1,l=r,u=A;0<=u;u--)o=l%(s=n[b=p[u]].length),l=~~(l/s),a[b]=n[b][o];for(u=0,q=x.length;u<q;u++)O=x[u],a[O[1]]=O[0]();for(u=0;u<C;u++)if(null!=y[u])for(w=0,S=(O=y[u]).length;w<S;w++)b=O[w][1],null==a[b]&&(g=!0,m=O[w][2].map(function(n){return null!=a[n]&&!isNaN(a[n])||(g=!1),a[n]}),g&&(a[b]=O[w][0].apply(null,m)));if(t||e)if(null==a[d]||isNaN(a[d])||e&&!R(a,d,d))I=!0;else for(f=a[d],sn===t&&((N={})[f]=1),h=d-1;0<=h;h--){if(null==(c=a[h])||isNaN(c)||ln===t&&f!==c||sn===t&&1===N[c]||on===t&&f<=c||mn===t&&c<=f||cn===t&&c<f||fn===t&&f<c||e&&!R(a,h,d)){I=!0;break}sn===t&&(N[c]=1),f=c}I||(v[_++]=a)}return v.length>_&&(v.length=_),v}function he(n,t,e,r,i){r=!0===r,e=e===A?A:q,i=i||M.Q();for(var u,l=0,s=0,o=0,m=n.length,c=t.length,f=new Array(m+c),a=J.Arithmetic.O;l<m&&s<c;)0<e.cmp(n[l],t[s])?((u=n[l].cast(i)).equ(a)||(f[o++]=u),l++):(0<e.cmp(t[s],n[l])?(u=(r?t[s].neg():t[s]).cast(i)).equ(a)||(f[o++]=u):((u=(r?n[l].sub(t[s]):n[l].add(t[s])).cast(i)).equ(a)||(f[o++]=u),l++),s++);for(;l<m;)(u=n[l].cast(i)).equ(a)||(f[o++]=u),l++;for(;s<c;)(u=(r?t[s].neg():t[s]).cast(i)).equ(a)||(f[o++]=u),s++;return f.length>o&&(f.length=o),f}function de(t,e,r,i){r=r===A?A:q,i=i||M.Q();var n,u,l,s,o,m,c,f=J.Arithmetic.O;if(t.length>e.length&&(u=t,t=e,e=u),u=t.length,l=e.length,s=new Array(u*l),0<u&&0<l){for(s[n=0]=r(0,t[0].mul(e[0]).e,i),c=g(Dn(u,function(n){return[t[n].cast(i).mul(e[0].cast(i)),n]}),"max",function(n,t){return r.cmp(n[0],t[0])}),o=Dn(u,0);m=c.peek();)0!==r.cmp(s[n],m[0])&&(s[n].equ(f)||(s[++n]=r(0,0,i)),s[n].e=m[0].e),s[n]=s[n].add(m[0]),o[m[1]]++,o[m[1]]<l?c.replace([t[m[1]].cast(i).mul(e[o[m[1]]].cast(i)),m[1]]):c.pop();c.dispose(),s.length>n+1&&(s.length=n+1)}return s}function ge(n,t,e,r,i){r=!0===r,e=e===A?A:q,i=i||M.Q();var u,l,s,o=n.length,m=t.length,c=J.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())||d<o;)null==l||d<o&&e.cmp(l.term,n[d])<0?(u=n[d].cast(i),d++):d<o&&0===e.cmp(l.term,n[d])?(u=n[d].cast(i).sub(l.term),m>l.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=he(a,[l=u.div(s)],e,!1,i),1<m&&f.push({term:l.mul(t[1].cast(i)),n:2,Q:l})):r&&(h=he(h,[u],e,!1,i)));return f.dispose(),r?[a,h]:a}function _e(n,t,e){return null==t||!t.length||t.length<=1?1===t.length?Dn(n-1,function(n){return n<t[0]?n:n+1}):Dn(n,0,1):(!0===e&&(-1===(e=Vn(t))?t=kn(new Array(t.length),t):0===e&&(t=Wn(t.slice(),1,!0))),Gn(null,n,t))}function ve(n,t){if(t<=0)return[];var e,r=Dn(t,0,0),i=n.length;for(--t,e=0;e<i;e++)r[t-n[e]]=1;return r}function be(n,t){t=Q.min(t||n.length,n.length);var e,r=[];for(--t,e=0;e<=t;e++)0<n[e]&&r.push(t-e);return r}function pe(n,t,e){return null==n?null:(t=t||n.length,Xn(new Array(t),n,1,-1,-1===e?t-1:0,-1===e?0:t-1,0,t-1))}function ye(n,t,e){return null==n?null:(t=t||n.length,Fn(new Array(t),n,1,1,-1===e?t-1:0,-1===e?0:t-1,0,t-1))}function xe(n,t,e){if(null==t)return null;var r,i=null,u=t.length;if(e=-1===e?-1:1,n)(r=En(nt,0,t))<=1?i=t.slice():(0<(r-=En(nt,0,i=ye(_e(r-1,pe(t,u-1,e)))))&&i.push(r),e<0&&kn(i,i));else{var l,s,o,m,c,f=1,n=0,a=0,h="push";if(e<0&&(f=-f,n=u-1-n,h="unshift"),qn(t[n]))for(i=[[(c=t[n])[1],c[0]]],l=0,o=1,m=f+n;o<u;o++,m+=f)s=e<0?0:l,(c=t[m])[1]===i[s][0]?i[s][1]+=c[0]:(i[h]([c[1],c[0]]),l++);else for(i=Dn(r=t[n],1,0),e<0&&(a=r-1-a),o=1,m=f+n;o<u;o++,m+=f)for(l=0,s=a,c=t[m];l<r&&0<c;)i[s]++,c--,l++,s+=f}return i}function qe(n,t,e){var r,i,u=t.length,l=u*u;for(n=n||new Array(l),i=r=0;r<l;)n[r+i]=0,++i>=u&&(i=0,r+=u);if(!0===e)for(r=0;r<u;r++)n[u*t[r]+r]=1;else for(i=r=0;i<u;i++,r+=u)n[r+t[r]]=1;return n}function Ae(n,t,e){var r,i,u=t.length,l=Q.floor(Q.sqrt(u));if(n=n||new Array(l),!0===e)for(i=r=0;r<l;)t[l*r+i]&&(n[i]=r),++i>=l&&(i=0,r++);else for(i=r=0;r<l;)t[r+i]&&(n[r]=i),++i>=l&&(i=0,r++);return n}function Ie(e,n,t){var r=e?e.length:0,i=1,u=0,l=0,s=l<r&&e[l]||1;return-1===t&&(i=-1,u=(r||n)-1),En(function(n,t){return s<=0&&(u+=i,s=++l<r&&e[l]||1),s--,n[t]=u,n},new Array(n),null,0,n-1)}function Oe(n,t){return En(function(n,t,e){return n[t]=e,n},n||new Array(t.length),t)}function we(n,t,e){var r=t.length,u=Q.ceil(V(e||r)),l=1<<u,s=Dn((1<<1+u)-1,0,0);return En(function(n,t,e){for(var r=t+l,i=0;i<u;i++)1&r&&(t-=s[r>>>1<<1]),s[r]+=1,r>>>=1;return s[r]+=1,n[e]=t,n},n||new Array(r),t)}function Se(n,t,e){for(var r,i,u=t.length,l=Q.ceil(V(e||u)),s=1<<l,o=new Array((1<<1+l)-1),m=0;m<=l;m++)for(r=(i=1)<<m;i<=r;i++)o[r-1+i]=1<<l-m;return En(function(n,t,e){for(var r=1,i=0;i<l;i++)--o[r],t>=o[r<<=1]&&(t-=o[r],r++);return o[r]=0,n[e]=r-s,n},n||new Array(u),t)}function Ce(n,t){var e=n.length,r=new Array(e),i=!0===t?1:0,u=Dn(e,0,0),l=0,s=0,o=new Array(e),m=0,c=l++;for(u[o[m++]=c]=1;l<e;){if(u[c=n[c]])for(i<m&&(o.length=m,r[s++]=o),o=new Array(e),m=0;l<e&&u[c=l];)++l;u[c]||(u[o[m++]=c]=1)}return i<m&&(o.length=m,r[s++]=o),s<r.length&&(r.length=s),r}function Ne(n,t){for(var e,r,i,u=Dn(t||n.reduce(function(n,t){return Q.max(n,Q.max.apply(null,t)||0)},0)+1,0,1),l=n.length-1;0<=l;l--)if(r=(i=n[l]).length){for(e=0;e+1<r;e++)u[i[e]]=i[e+1];u[i[r-1]]=i[0]}return u}function Re(n){for(var t=n.length,e=new Array(t),r=0,i=Ce(n,!0),u=0,l=i.length;u<l;u++)r=function(n,t,e){var r,i=n.length,u=null==t;if(1<i)for(u&&(t=new Array(i-1),e=0),r=i-1;1<=r;r--)t[e++]=[n[0],n[r]];else u&&(t=[]);return u?t:e}(i[u],e,r);return r<e.length&&(e.length=r),e}function Ze(n,t){t=t||n.reduce(function(n,t){return Q.max(n,Q.max.apply(null,t)||0)},0)+1;for(var e,r,i=n.length,u=new Array(t),l=0;l<t;l++)u[l]=l;for(l=0;l<i;l++)swap=e[l],r=u[e[0]],u[e[0]]=u[e[1]],u[e[1]]=r;return u}function Me(e,r,n){var i=e.length,u=r.length;if(!0===n)return En(i<u?function(n,t){return n[t]=r[t]<i?e[r[t]]:e[t],n}:u<i?function(n,t){return n[t]=t<u?e[r[t]]:e[t],n}:function(n,t){return n[t]=e[r[t]],n},new Array(i),null,0,i-1,1);for(var t=e.slice(),l=0;l<i;l++)e[l]=t[r[l]];return e}function Ee(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<l;o++){for(u=n[o],r=!0,i=0;i<s;i++)if(t[i]!==u[i]){r=!1;break}if(r)return o}return-1}return n&&n.length?n.indexOf(t):-1}function De(n,t){return Q.round((t-n)*J.Math.rnd()+n)}function Te(){var n=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;return n.length?En(function(n,t){return t.gt(n)?t:n},n[0],1,n.length-1):null}function Pe(){var n=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;return n.length?En(function(n,t){return t.lt(n)?t:n},n[0],1,n.length-1):null}function ke(i,u){var t=null;return qn(i)&&Sn(i[0])?(t=i[0],i=function(n){return Nn(n,t)},u=Sn(u)?u:function(n){return new t(n)}):Sn(i)||(i=function(n){return!0},u=function(n){return n}),function n(t){if(qn(t)||An(t))for(var e=0,r=t.length;e<r;e++)t[e]=n(t[e]);else i(t)||(t=u(t));return t}}function $e(n){if(!arguments.length||null==n)return dn;var t=0;if(On(n)){for(var e=0,r=(n=n.toUpperCase().split(",").map(H)).length;e<r;e++)t|=n[e].length&&z.call($e,n[e])?$e[n[e]]:0;0<t&&!((bn|vn)&t)&&(t|=dn),t<=0&&(t=dn)}else t=pn&n?pn&n:dn;return vn&t&&bn&t&&(t&=~bn),_n&t&&(gn|dn)&t&&(t&=~(gn|dn)),gn&t&&dn&t&&(t&=~dn),vn&t&&(t&=~an),t}function Le(n,t,e,r,i){if(null==n)return null;var u,l=null;if("ordered"===i||"variation"===i)for(l={},u=0;u<e;u++)l[n[u]]=1;return l}return zt.mem=c(),Kt.mem1=c(),Kt.mem2=c(),Kt.mem3=c(),Yt.mem=c(),te.mem1=c(),te.mem2=c(),ee.mem=c(),re.mem=c(),ie.mem=c(),ue.mem=c(),le.mem=c(),se.mem=c(),oe.mem=c(),me.mem=c(),ce.mem=c(),J.Class=n,J.Options={MAXMEM:1e4,RANDOM:"index"},t=J.DefaultArithmetic={isDefault:function(){return!0},isNumber:function(n){return this.isDefault()?wn(n):wn(n)||Nn(n,this.O[X])},J:-1,O:0,I:1,II:2,INF:{valueOf:function(){return 1/0},toString:function(){return"Infinity"},toTex:function(){return"\\infty"}},NINF:{valueOf:function(){return-1/0},toString:function(){return"-Infinity"},toTex:function(){return"-\\infty"}},nums:function(n){if(qn(n)||An(n)){for(var t=0,e=n.length;t<e;t++)n[t]=this.nums(n[t]);return n}return this.num(n)},num:function(n){return wn(n)?Q.floor(n):parseInt(n||0,10)},val:function(n){return Q.floor(n.valueOf())},digits:function(n,t){t=n.toString(+(t||10));return"-"===t.charAt(0)&&(t=t.slice(1)),t},neg:function(n){return-+n},inv:yn,equ:function(n,t){return n===t},gte:function(n,t){return t<=n},lte:function(n,t){return n<=t},gt:function(n,t){return t<n},lt:function(n,t){return n<t},inside:function(n,t,e,r){return r?t<=n&&n<=e:t<n&&n<e},clamp:function(n,t,e){return n<t?t:e<n?e:n},wrap:function(n,t,e){return n<t?e:e<n?t:n},wrapR:function(n,t){return n<0?n+t:n},add:nt,sub:function(n,t){return n-t},mul:function(n,t){return n*t},div:function(n,t){return Q.floor(n/t)},divceil:function(n,t){return Q.ceil(n/t)},mod:function(n,t){return n%t},pow:Q.pow,shl:function(n,t){return n<<t},shr:function(n,t){return n>>t},bor:function(n,t){return n|t},band:function(n,t){return n&t},xor:function(n,t){return n^t},abs:Q.abs,min:Q.min,max:Q.max,rnd:De},J.Arithmetic=r({},t,{isDefault:function(){return 0===this.O&&this.add===nt},neg:function(n){return J.Arithmetic.mul(J.Arithmetic.J,n)},abs:function(n){return J.Arithmetic.gt(J.Arithmetic.O,n)?J.Arithmetic.neg(n):n},min:function(n,t){return J.Arithmetic.lt(n,t)?n:t},max:function(n,t){return J.Arithmetic.gt(n,t)?n:t},divceil:function(n,t){if(null==t)return n;var e=J.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}}),J.Math={rnd:Q.random,rndInt:De,factorial:Kt,stirling:te,partitions:ie,compositions:se,bell:me,catalan:oe,fibonacci:ce,polygonal:function n(t,e){var r=J.Arithmetic,i=(r.O,r.I,r.II),u=r.num;return Nn(e,Z)&&(e=e.num),e=u(e),r.lt(e,3)?null:Nn(t,Z)?new t[X](n(t.num,e)):(t=u(t),r.div(r.mul(t,r.sub(r.mul(t,r.sub(e,i)),r.sub(e,4))),i))},sum:tt,product:et,pow2:Vt,exp:Bt,powsq:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](ot(n.num,t)):ot(e.num(n),t)},addm:function(n,t,e){var r=J.Arithmetic;return e=Nn(e,Z)?e.num:r.num(e),t=Nn(t,Z)?t.num:r.num(t),Nn(n,Z)?new n[X](it(n.num,t,e)):it(r.num(n),t,e)},negm:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](rt(n.num,t)):rt(e.num(n),t)},mulm:function(n,t,e){var r=J.Arithmetic;return e=Nn(e,Z)?e.num:r.num(e),t=Nn(t,Z)?t.num:r.num(t),Nn(n,Z)?new n[X](ut(n.num,t,e)):ut(r.num(n),t,e)},invm:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](lt(n.num,t)):lt(e.num(n),t)},powm:function(n,t,e){var r=J.Arithmetic;return e=Nn(e,Z)?e.num:r.num(e),t=Nn(t,Z)?t.num:r.num(t),Nn(n,Z)?new n[X](st(n.num,t,e)):st(r.num(n),t,e)},isqrt:function(n){var t=J.Arithmetic;return Nn(n,Z)?new n[X](mt(n.num)):mt(t.num(n))},ikthroot:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](ft(n.num,t)):ft(e.num(n),t)},isqrtp:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](_t(n.num,t)):_t(e.num(n),t)},ilog:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](vt(n.num,t)):vt(e.num(n),t)},divisors:function(n,t){var e=J.Arithmetic;return Lt(Nn(n,Z)?n:e.num(n),!0===t)},legendre:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](gt(n.num,t)):gt(e.num(n),t)},jacobi:function(n,t){var e=J.Arithmetic;return t=Nn(t,Z)?t.num:e.num(t),Nn(n,Z)?new n[X](dt(n.num,t)):dt(e.num(n),t)},moebius:function(n){var t=J.Arithmetic;return Nn(n,Z)?new n[X](jt(n.num)):jt(t.num(n))},pollardRho:function(n,t,e,r,i,u){var l,s=J.Arithmetic.num;return null!=e&&(e=Nn(e,Z)?e.num:s(e)),null!=t&&(t=Nn(t,Z)?t.num:s(t)),Nn(n,Z)?null==(l=Ot(n.num,t,e,r,i||null,u||null))?l:new n[X](l):Ot(s(n),t,e,r,i||null,u||null)},factorize:function(n){var t=J.Arithmetic;return wt(Nn(n,Z)?n:t.num(n))},isProbablePrime:function(n){var t=J.Arithmetic;return qt(Nn(n,Z)?n.num:t.num(n))},isPrime:function(n){var t=J.Arithmetic;return It(Nn(n,Z)?n.num:t.num(n))},nextPrime:function(n,t){var e=J.Arithmetic;return function(n,t){var e,r=J.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(qt(e)&&It(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(qt(e)&&It(e))return e}}(Nn(n,Z)?n.num:e.num(n),-1===t?-1:1)},gcd:function(){var t=J.Arithmetic,n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments),e=null,n=Nt(n.map(function(n){return Nn(n,Z)?(e=e||n[X],n.num):t.num(n)}));return e?new e(n):n},xgcd:function(){var t=J.Arithmetic,n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments),e=null,n=Mt(n.map(function(n){return Nn(n,Z)?(e=e||n[X],n.num):t.num(n)}));return e&&n?n.map(function(n){return new e(n)}):n},lcm:function(){var t=J.Arithmetic,n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments),e=null,n=Zt(n.map(function(n){return Nn(n,Z)?(e=e||n[X],n.num):t.num(n)}));return e?new e(n):n},diophantine:function(n,t,e,r){var i=J.Arithmetic;return(qn(n)||An(n))&&n.length?Ft(i.nums(n),i.num(t||0),e,!0===r):null},diophantines:function(n,t,e,r){var i=M.Z();return(Nn(n,E)||qn(n)||An(n))&&(!Nn(n,E)||n.nr&&n.nc)&&(Nn(n,E)||n.length)?(Nn(t,E)||qn(t)||An(t)||(t=Dn(Nn(n,E)?n.nr:n.length,function(){return t||0})),Xt(n,t=Nn(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=J.Arithmetic;return(qn(n)||An(n))&&n.length?(n=f.nums(n),t=f.num(t||0),u=f.num(e||0),l=r,i=!0===i,m=J.Arithmetic,c=m.O,n.length?(i=!0===i,(s=Ft(n.concat(u),t,l,i))&&i&&(o=s[1],s=s[0]),null==(s=null==s?null:Dn(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=M.Z();return(Nn(n,E)||qn(n)||An(n))&&(!Nn(n,E)||n.nr&&n.nc)&&(Nn(n,E)||n.length)?(n=Nn(n,E)?n:h.cast(n),Nn(t,E)||qn(t)||An(t)||(t=Dn(Nn(n,E)?n.nr:n.length,function(){return t||0})),t=Nn(t,E)?t:h.cast(t),Nn(e,E)||qn(e)||An(e)||(e=Dn(Nn(n,E)?n.nr:n.length,function(){return e||0})),e=Nn(e,E)?e:h.cast(e),u=n,h=t,l=e,s=r,n=!0===i,r=M.Z(),f=J.Arithmetic,a=r.Zero(),Nn(u,E)&&Cn(u.ring.NumberClass,Z)||(u=E(r,u)),u.nr&&u.nc?(qn(l)||An(l)||Nn(l,E)||(l=Dn(u.nr,function(n){return l})),(qn(l)||An(l))&&(l=E(r,l)),(qn(h)||An(h))&&(h=E(r,h)),i=l.col(0),m=r.lcm(i),u=u.concat(l),n=!0===n,null!=(o=Xt(u,h,s,!0))&&(c=o[1],o=o[0]),null==(o=null==o?null:Dn(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(z.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(C(S(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=J.Arithmetic;return(qn(n)||An(n))&&n.length?function(t,n){var e,r,i,u,l,s,o,m,c=J.Arithmetic,f=c.O,a=c.I,h=c.J,d=c.II,g=t.length,_=On(n)&&n.length?n:"i";if(!g)return null;if(m=t.filter(function(n){return 1===Gt(n)}).length,n=t.filter(function(n){return-1===Gt(n)}).length,1===g||0===m||0===n)return Dn(g,function(){return N()});if(o=Dn(g,function(n){return mt(c.abs(t[n]))}),g!==t.filter(function(n,t){return c.equ(c.abs(n),c.mul(o[t],o[t]))}).length)return Dn(g,function(){return N()});if(u=Dn(g-1,function(n){return _+"_"+(n+1)}),2===g)return[N(C(S(u[0]),o[1])),N(C(S(u[0]),o[0]))];for(Gt(t[0])+Gt(t[1])+Gt(t[2])<0&&(t=t.map(function(n){return c.neg(n)})),l=e=0;l<g;l++)-1===Gt(t[l])&&(e=l);for(n=N(Dn(u.length,function(n){return C(u[n]+"^2")})),r=(h=[N([n,C(u[g-2]+"^2",c.mul(h,d))])].concat(Dn(g-2,function(n){return N(C(u[n]+"*"+u[g-2],d))}))).slice(0,e).concat(n).concat(h.slice(e)),s=a,l=0;l<g;l++)s=Zt(s,!(l===e||0<e&&0===l||0===e&&1===l)&&c.equ(f,c.mod(o[l],d))?c.div(o[l],d):o[l]);for(l=0;l<g;l++)i=r[l],r[l]=r[l].mul(c.div(s,o[l])),c.equ(f,c.mod(s,o[l]))||(r[l]=r[l].add(i.div(d)));return r}(e.nums(n),t):null},linears:function(n,t,e){var r,i,u,l=M.Q();return(Nn(n,E)||qn(n)||An(n))&&(!Nn(n,E)||n.nr&&n.nc)&&(Nn(n,E)||n.length)?(Nn(t,E)||qn(t)||An(t)||(t=Dn(Nn(n,E)?n.nr:n.length,function(){return t||0})),t=Nn(t,E)?t:l.cast(t),l=t,r=e,Nn(e=n,E)?e.ring.isField()||(e=E(e.ring.associatedField(),e)):e=E(M.Q(),e),e.nr&&e.nc?(l=E(e.ring,l),n=e.ginv(),i=n.mul(l),!0===r?i.col(0):e.mul(i).equ(l)?!1===r?i.col(0):(u=E.I(e.ring,i.nr).sub(n.mul(e)),On(r)?r=Dn(u.nc,function(n){return r+"_"+(n+1)}):qn(r)&&u.nc>r.length&&(r=r.concat(Dn(u.nc-r.length,function(n){return r[r.length-1].split("_")[0]+"_"+(r.length+n+1)}))),Dn(i.nr,function(t){return N(Dn(u.nc,function(n){return C(S(r[n]),u.val[t][n])})).add(i.val[t][0])})):null):null):null},lineqs:function(n,t,e){var r=M.Q();return(Nn(n,E)||qn(n)||An(n))&&(!Nn(n,E)||n.nr&&n.nc)&&(Nn(n,E)||n.length)?(Nn(t,E)||qn(t)||An(t)||(t=Dn(Nn(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(Nn(t,E)||(t=E(M.Q(),t)),!t.nr||!t.nc||t.ring!==M.Q())return null;for(e=E(t.ring,e).col(0),u=t.nc,l=t.nr,On(r=r||"x")?r=Dn(u,function(n){return r+"_"+(n+1)}):qn(r)&&u>r.length&&(r=r.concat(Dn(u-r.length,function(n){return r[r.length-1].split("_")[0]+"_"+(r.length+n+1)}))),i=[],n=Dn(l,function(n){return y.LTE(N(t.row(n).map(function(n,t){return C(S(r[t]),n)})),N(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;o<m;o++)if(o<a.length){if(a[o].isConst()&&a[o].lt(0))return null;n[o]=y.LTE(N(),a[o])}else{if(h=Q.floor((o-a.length)/f.length),d=(o-a.length)%f.length,c[h].isConst()&&f[d].isConst()&&c[h].lt(f[d]))return null;n[o]=y.LTE(f[d],c[h])}i.unshift([y.LTE(x.MAX(f),N(S(r[s]))),y.LTE(N(S(r[s])),x.MIN(c))])}else{for(m=a.length,n=new Array(m),o=0;o<m;o++){if(a[o].isConst()&&a[o].lt(0))return null;n[o]=y.LTE(N(),a[o])}(c.length||f.length)&&i.unshift(c.length?[y.LTE(N(S(r[s])),x.MIN(c))]:f.length?[y.LTE(x.MAX(f),N(S(r[s])))]:[])}return i}(n,t=Nn(t,E)?t:r.cast(t),e)):null},groebner:function(t){var n,e,r,i,u,l,s,o,m,c,f,a,h,d,g,_,v=J.Arithmetic,b=w;if(1<(t=t.map(function(n){return n.monic()})).length){for(b=t[0][X],n=j(t.length,2).mapTo(function(n){return[t[n[0]],t[n[1]]]});;){for(r=[];n.hasNext();)f=(_=n.next())[0],i=_[1],a=i,_=g=d=h=void 0,h=(f=f)[X],d=f.ltm(),g=a.ltm(),_=h.Term.lcm(d,g),(a=f.mul(h([_.div(d)],f.symbol)).sub(a.mul(h([_.div(g)],a.symbol))).multimod(t)).equ(v.O)||-1===Jt(a=a.monic(),r)&&-1===Jt(a,t)&&r.push(a);if(n.dispose(!0),!r.length)break;n=1===(e=r).length?L(t.length,e.length).mapTo(function(n){return[t[n[0]],e[n[1]]]}):T([L(t.length,e.length).mapTo(function(n){return[t[n[0]],e[n[1]]]}),j(e.length,2).mapTo(function(n){return[e[n[0]],e[n[1]]]})]),t=t.concat(e)}for(c=t.map(function(n){return n.ltm(!0)});c.length;){for(s=!1,u=0,l=c.length;u<l;u++)if(m=c[u],(o=c.slice(0,u).concat(c.slice(u+1))).length&&m.multimod(o).equ(v.O)){c=o,t.splice(u,1),s=!0;break}if(!s)break}for(u=0,l=t.length;u<l;u++)i=t[u],(o=t.slice(0,u).concat(t.slice(u+1))).length&&(t[u]=i.multimod(o));t=t.sort(function(n,t){return b.Term.cmp(t.ltm(),n.ltm(),!0)})}return t},dotp:function(n,t){var e=J.Arithmetic;return(qn(n)||An(n))&&(qn(t)||An(t))?Ut(n,t,e):e.O},orthogonalize:function(n){return(qn(n)||An(n))&&n.length?function(n){if(!n.length)return[];var t,e,r,i,u,l,s,o,m,c,f=J.Arithmetic,a=n.length,h=new Array(a),d=new Array(a);if(Nn(n[0][0],_))for(t=n[0][0][X].gcd||Nt,l=0;l<a;l++){for(i=n[l],h[l]=e=i.slice(),m=e.length,s=0;s<l;s++)for(u=Ut(i,r=h[s],f),o=0;o<m;o++)e[o]=d[s].mul(e[o]).sub(u.mul(r[o]));if((c=t(e)).gt(f.I))for(o=0;o<m;o++)e[o]=e[o].div(c);d[l]=Ut(e,e,f)}else for(t=Nt,l=0;l<a;l++){for(i=n[l],h[l]=e=i.slice(),m=e.length,s=0;s<l;s++)for(u=Ut(i,r=h[s],f),o=0;o<m;o++)e[o]=f.sub(f.mul(d[s],e[o]),f.mul(u,r[o]));if(c=t(e),f.gt(c,f.I))for(o=0;o<m;o++)e[o]=f.div(e[o],c);d[l]=Ut(e,e,f)}return h}(n):[]}},J.Util={array:Dn,operate:En,unique:function(n,t,e){null==t&&(t=0),null==e&&(e=n.length-1);var r,i,u,l,s=e-t+1;if(s<=1)return 1==s?[n[t]]:[];for(r=c(),u=new Array(s),l=0;t<=e;)r[i=String(n[t])]||(u[l++]=n[t],r[i]=1),t++;return u.length>l&&(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=u<i?-1:1,m=s<l?-1:1,c=o*(u-i)+1,f=m*(s-l)+1,a=i,h=l,d=0;if(null==n&&(n=new Array(Q.min(c,f))),0===n.length)return n;for(;0<=o*(u-a)&&0<=m*(s-h);)1===r&&t[a]<e[h]||-1===r&&t[a]>e[h]?a+=o:(1===r&&t[a]>e[h]||-1===r&&t[a]<e[h]||(n[d++]=t[a],a+=o),h+=m);return d<n.length&&(n.length=d),n},difference:Gn,multi_difference:function(n,t,e,r,i,u,l,s){null==i&&(i=0),null==u&&(u=e.length-1),null==l&&(l=0),null==s&&(s=r?r.length-1:-1);var o=u<i?-1:1,m=s<l?-1:1,c=o*(u-i)+1,f=i,a=l,h=0;if(!r||!r.length)return e?e.slice():e;for(null==n&&(n=new Array(c));0<=o*(u-f)&&0<=m*(s-a);)e[f]===r[a]?1<t[e[f]]?t[e[f]]--:(f+=o,a+=m):e[f]>r[a]?a+=m:(n[h++]=e[f],t[e[f]]--,f+=o);for(;0<=o*(u-f);)0<t[e[f]]&&(n[h++]=e[f]),t[e[f]]--,f+=o;return h<n.length&&(n.length=h),n},union:zn,bsearch:function(n,t,e,r,i,u,l){u=u||function(n,t){return n==t},l=l||function(n,t){return n<t},e=-1===e?-1:1,null==r&&(r=0),null==i&&(i=t.length-1);var s,o,m=Q.max(r,0),c=Q.min(i,t.length-1);if(c<m||l(n,t[m])||l(t[c],n))return-1;if(u(n,t[m]))return m;if(u(n,t[c]))return c;if(-1===e)for(;m<c;){if(u(n,o=t[s=m+c>>>1]))return s;l(o,n)?c=s-1:m=s+1}else for(;m<c;){if(u(n,o=t[s=m+c>>>1]))return s;l(n,o)?c=s-1:m=s+1}return-1},bisect:Kn,complementation:Pn,reflection:kn,reversion:$n,gray:Ln,igray:jn,grayn:Un,igrayn:Jn,finitedifference:Fn,partialsum:Xn,convolution:function(n,t,e){var r,i,u,l=n.length,s=t.length;if(!0===e)for(u=Dn(l+s-1,function(){return 0}),r=0;r<l;r++)for(i=0;i<s;i++)u[r+i]=0===u[r+i]?n[r].mul(t[i]):u[r+i].add(n[r].mul(t[i]));else if(e)for(u=Dn(l+s-1,function(){return e.O}),r=0;r<l;r++)for(i=0;i<s;i++)u[r+i]=e.add(u[r+i],e.mul(n[r],t[i]));else for(u=Dn(l+s-1,function(){return 0}),r=0;r<l;r++)for(i=0;i<s;i++)u[r+i]+=n[r]*t[i];return u},summation:function(t,e,r,n){var i=t.length,u=e.length;return n=Dn(Q.max(i,u),!0===r?n?function(n){return i<=n?e[n].neg():u<=n?t[n]:t[n].sub(e[n])}:function(n){return i<=n?e[n]:u<=n?t[n]:t[n].add(e[n])}:r?n?function(n){return i<=n?r.neg(e[n]):u<=n?t[n]:r.sub(t[n],e[n])}:function(n){return i<=n?e[n]:u<=n?t[n]:r.add(t[n],e[n])}:n?function(n){return i<=n?-e[n]:u<=n?t[n]:t[n]-e[n]}:function(n){return i<=n?e[n]:u<=n?t[n]:t[n]+e[n]})},wheel:function(){var t,n,e,r,i,u=arguments.length&&qn(arguments[0])?arguments[0]:arguments,l=u.length;if(!l||!u[0])return null;for(i=1,e=0;e<l;e++)i*=u[e];for(t=[],i+=1,n=u[0];n<=i;n++){for(r=!0,e=0;e<l;e++)if(!(n%u[e])){r=!1;break}r&&t.push(n)}return[t,Dn(t.length,function(n){return n+1<t.length?t[n+1]-t[n]:t[0]+i-1-t[n]})]},sort:Wn,shuffle:Bn,pick:Hn,pluck:Tn,is_mirror_image:function(n){var t,e;if(qn(n)||An(n)){if(n.length<=1)return!0;for(t=0,e=n.length-1;t<e;t++,e--)if(n[t]!==n[e])return!1}else{if((n=String(n)).length<=1)return!0;for(t=0,e=n.length-1;t<e;t++,e--)if(n.charAt(t)!==n.charAt(e))return!1}return!0},cycle_detection:Ct},J.BitArray=n({constructor:function n(t){if(!Nn(this,n))return new n(t);this.length=t,this.bits=new Uint32Array(Q.ceil(t/32))},length:0,bits:null,dispose:function(){return this.length=null,this.bits=null,this},clone:function(){var n=new J.BitArray(this.length);return n.bits=new Uint32Array(this.bits),n},fromArray:function(n){return this.bits=new Uint32Array(n),this},toArray:function(){return G.call(this.bits)},toString:function(){return this.toArray().map(Rn).join("")},reset:function(){for(var n=this.bits,t=n.length,e=0;e<t;e++)n[e]=0;return this},isset:function(n){return!!(this.bits[n>>>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}}),b=J.Node=function n(t,e,r,i){var u=this;if(!Nn(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=J.Heap=n({constructor:function n(t,e,r){var i=this;if(!Nn(i,n))return new n(t,e,r);e=String(e||"min").toLowerCase().slice(0,3),i.type="max"===e?"max":"min",Sn(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<t?-1:t<n?1:0},heapify:function(n,t,e){var r,i=n.length;if(e=e||g.CMP,"max"===t)for(r=(i>>>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<e&&r(l,u=n[i=e-1>>>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<i;)(r=s+1)<i&&0<=e(n[s],n[r])&&(s=r),n[t]=n[s],s=2*(t=s)+1;n[t]=l,g._siftdown(n,u,t,e)},_siftdown_max:function(n,t,e,r){for(var i,u,l=n[e];t<e&&r(u=n[i=e-1>>>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<i;)(r=s+1)<i&&0<=e(n[r],n[s])&&(s=r),n[t]=n[s],s=2*(t=s)+1;n[t]=l,g._siftdown_max(n,u,t,e)}},_h:null,type:"min",cmp:null,dispose:function(){return this._h=null,this.cmp=null,this},peek:function(){var n=this._h;return n.length?n[0]:null},push:function(n){var t=this;return t._h.push(n),"max"===t.type?g._siftdown_max(t._h,0,t._h.length-1,t.cmp):g._siftdown(t._h,0,t._h.length-1,t.cmp),t},pop:function(){var n,t=this,e=t._h.pop();return t._h.length?(n=t._h[0],t._h[0]=e,"max"===t.type?g._siftup_max(t._h,0,t.cmp):g._siftup(t._h,0,t.cmp),n):e},replace:function(n){var t=this,e=t.peek();return t._h[0]=n,"max"===t.type?g._siftup_max(t._h,0,t.cmp):g._siftup(t._h,0,t.cmp),e}}),_=n(r({constructor:function(){},dispose:function(){return this},clone:function(){return 0+this},valueOf:function(){return 0},toString:function(){return""},toTex:function(){return this.toString()}},{isReal:function(){return!0},isImag:function(){return!1},equ:function(n){return Nn(n,_)?n.equ(this):On(n)?String(this)===n:this===n},gt:function(n){return wn(n)?n<this:!!Nn(n,_)&&n.lt(this)},gte:function(n){return wn(n)?n<=this:!!Nn(n,_)&&n.lte(this)},lt:function(n){return wn(n)?this<n:!!Nn(n,_)&&n.gt(this)},lte:function(n){return wn(n)?this<=n:!!Nn(n,_)&&n.gte(this)},real:function(){return this},imag:function(){return 0},abs:function(){return Q.abs(this)},neg:function(){return-this},conj:function(){return this},inv:yn,add:function(n){return Nn(n,_)?n.add(this):this+n},sub:function(n){return Nn(n,_)?n.neg().add(this):this-n},mul:function(n){return Nn(n,_)?n.mul(this):this*n},div:function(n){return Nn(n,f)?n[X](this).div(n):Nn(n,_)?null:Q.floor(this/n)},mod:function(n){return Nn(n,f)?n[X](this).mod(n):Nn(n,_)?null:this%n},divmod:function(n){return[this.div(n),this.mod(n)]},divides:function(n){return 0!==this&&(wn(n)?0==n%this:Nn(n,Z)?n.mod(this).equ(0):!!Nn(n,f))},pow:function(n){return Q.pow(this,+n)},rad:function(n){return ct(this,n)}})),f=n(_,{constructor:function(){},clone:function(){return new this[X](this)},isConst:function(){return!0},isInt:function(){return!1},real:function(){return this},imag:function(){return this[X].Zero()}}),a=n(_,{constructor:function(){},clone:function(){return new this[X](this)},isConst:function(){return!1},isInt:function(){return!1},c:function(){return 0},valueOf:function(){return this.c().valueOf()},gt:yn,gte:yn,lt:yn,lte:yn,real:function(){return this},imag:function(){return this[X].Zero()},abs:yn,neg:yn,conj:yn,inv:yn,add:yn,sub:yn,mul:yn,div:yn,mod:yn,divmod:yn,pow:yn,rad:yn,d:yn,evaluate:yn}),o=n(a,{constructor:function(){}}),(Z=J.Integer=n(f,{constructor:function n(t){var e=J.Arithmetic;if(!Nn(this,n))return new n(t);Nn(t,a)&&(t=t.c()),Nn(t,v)&&(t=t.real()),Nn(t,p)&&(t=t.integer(!0)),Nn(t,n)&&(this._isp=t._isp),Nn(t,[n,m])&&(t=t.num),this.num=e.num(t||0)},__static__:{O:null,I:null,J:null,Zero:function(){return null==Z.O&&(Z.O=Z(J.Arithmetic.O)),Z.O},One:function(){return null==Z.I&&(Z.I=Z(J.Arithmetic.I)),Z.I},MinusOne:function(){return null==Z.J&&(Z.J=Z(J.Arithmetic.J)),Z.J},hasInverse:function(){return!1},cast:null,gcd:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;return Z(Nt(Dn(t.length,function(n){return t[n].num})))},xgcd:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;if(t.length)return Mt(Dn(t.length,function(n){return t[n].num})).map(function(n){return Z(n)})},lcm:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;return Z(Zt(Dn(t.length,function(n){return t[n].num})))},max:Te,min:Pe,rnd:function(n,t){var e,r=J.Arithmetic;return n=Z.cast(n),(t=Z.cast(t)).lt(n)&&(e=n,n=t,t=e),n.equ(t)?n:Z(r.rnd(n.num,t.num))},fromString:function(n){return(n=H(String(n))).length?("+"===n.charAt(0)&&(n=H(n.slice(1))),-1!==n.indexOf("e")||-1!==n.indexOf(".")?Z(p.fromString(n)):n.length?Z(J.Arithmetic.num(n)):Z.Zero()):Z.Zero()}},num:null,_n:null,_isp:null,_str:null,dispose:function(){var n=this;return n._n&&n===n._n._n&&(n._n._n=null),n.num=null,n._n=null,n._str=null,n},isInt:function(){return!0},isPrime:function(){var n=this,t=J.Arithmetic;return null==n._isp&&(n._isp=qt(t.abs(n.num))&&It(t.abs(n.num))),n._isp},equ:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?t.equ(this.num,n.num):Nn(n,_)?n.equ(this.num):t.isNumber(n)?t.equ(this.num,n):!!On(n)&&n===this.toString()},gt:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?t.gt(this.num,n.num):Nn(n,_)?n.lt(this.num):!!t.isNumber(n)&&t.gt(this.num,n)},gte:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?t.gte(this.num,n.num):Nn(n,_)?n.lte(this.num):!!t.isNumber(n)&&t.gte(this.num,n)},lt:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?t.lt(this.num,n.num):Nn(n,_)?n.gt(this.num):!!t.isNumber(n)&&t.lt(this.num,n)},lte:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?t.lte(this.num,n.num):Nn(n,_)?n.gte(this.num):!!t.isNumber(n)&&t.lte(this.num,n)},abs:function(){return Z(J.Arithmetic.abs(this.num))},neg:function(){var n=this;return null==n._n&&(n._n=Z(J.Arithmetic.neg(n.num)),n._n._n=n),n._n},inv:yn,add:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?Z(t.add(this.num,n.num)):Nn(n,_)?n.add(this.num):t.isNumber(n)?Z(t.add(this.num,n)):this},sub:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?Z(t.sub(this.num,n.num)):Nn(n,_)?n.neg().add(this.num):t.isNumber(n)?Z(t.sub(this.num,n)):this},mul:function(n){var t=J.Arithmetic;return Nn(n,[Z,m])?Z(t.mul(this.num,n.num)):Nn(n,_)?n.mul(this.num):t.isNumber(n)?Z(t.mul(this.num,n)):this},div:function(n){var t=this,e=J.Arithmetic;return Nn(n,[Z,m])?Z(e.div(t.num,n.num)):Nn(n,v)?v(t).div(n):Nn(n,p)?p(t).div(n):e.isNumber(n)?Z(e.div(t.num,n)):t},mod:function(n){var t=this,e=J.Arithmetic;return Nn(n,[Z,m])?Z(e.mod(t.num,n.num)):Nn(n,v)?v(t).mod(n):Nn(n,p)?p(t).mod(n):e.isNumber(n)?Z(e.mod(t.num,n)):t},divmod:function(n){return[this.div(n),this.mod(n)]},divides:function(n){var t=J.Arithmetic,e=t.O;return!t.equ(e,this.num)&&(Nn(n,Z)?t.equ(e,t.mod(n.num,this.num)):!!Nn(n,_)||!!t.isNumber(n)&&t.equ(e,t.mod(t.num(n),this.num)))},integer:function(n){return!0===n?this.num:this},pow:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).lt(t.O)?null:n.equ(t.I)?this:Z(t.pow(this.num,n.num))},rad:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).lt(t.I)?null:n.equ(t.I)?this:Z(ft(this.num,n.num))},valueOf:function(){return J.Arithmetic.val(this.num)},toString:function(){return null==this._str&&(this._str=String(this.num)),this._str},toDec:function(n){var t=this.toString();return wn(n)&&0<n&&(t+="."+new Array(n+1).join("0")),t}})).cast=ke([Z],function(n){return On(n)?Z.fromString(n):new Z(n)}),(m=J.IntegerMod=n(f,{constructor:function n(t,e,r){var i=this,u=J.Arithmetic;if(!Nn(i,n))return new n(t,e,r);if(Nn(t,a)&&(t=t.c()),Nn(t,v)&&(t=t.real()),Nn(t,p)&&(t=t.integer(!0)),Nn(t,Z)&&(t=t.num),Nn(t,n)&&(r=null==e?t._simpl:r,e=e||t.m,t=t.num),e=Z.cast(e),t=u.num(t||0),e.equ(u.O))throw new Error("Zero modulus in Abacus.IntegerMod!");i.num=t,i.m=e,r?i._simpl=!0:i.simpl()},__static__:{Zero:function(n){return m(J.Arithmetic.O,n,!0)},One:function(n){return m(J.Arithmetic.I,n)},MinusOne:function(n){return m(J.Arithmetic.J,n)},hasInverse:function(){return!0},cast:null,gcd:function(){for(var n=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,t=J.Arithmetic.O,e=null,r=n.length,i=0;i<r;i++)n[i].equ(t)||null!=e&&!n[i].lt(e)||(e=n[i]);return null==e?n[0]:e},xgcd:function(){var n,t=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments),e=J.Arithmetic.O,r=-1,i=null,u=t.length;if(t.length){for(n=0;n<u;n++)t[n].equ(e)||null!=i&&!t[n].lt(i)||(i=t[n],r=n);return Dn(t.length+1,null==i?function(n){return 0===n?t[0]:1===n?m.One(t[0].m):m.Zero(t[0].m)}:function(n){return 0===n?i:r+1===n?m.One(t[0].m):m.Zero(t[0].m)})}},lcm:function(){var n,t,e=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,r=e.length,i=J.Arithmetic.O;if(r<=1)return 1===r?e[0]:m.Zero(2);if(e[0].equ(i)||e[1].equ(i))return m.Zero(e[0].m);for(t=Te(e[0],e[1]),n=2;n<r;n++){if(e[n].equ(i))return m.Zero(e[0].m);t=Te(t,e[n])}return t},max:Te,min:Pe,rnd:function(n,t,e){var r,i=J.Arithmetic;return e=Z.cast(e),n=Z.cast(n),t=Z.cast(t),n.lt(0)&&(n=Z.Zero()),n.gte(e)&&(n=e.sub(1)),t.lt(0)&&(t=Z.Zero()),t.gte(e)&&(t=e.sub(1)),t.lt(n)&&(r=n,n=t,t=r),n.equ(t)?m(n.num,e,!0):m(i.rnd(n.num,t.num),e,!0)},fromString:function(n,t){return(n=H(String(n))).length?("+"===n.charAt(0)&&(n=H(n.slice(1))),-1!==n.indexOf("e")||-1!==n.indexOf(".")?m(p.fromString(n),t):n.length?m(J.Arithmetic.num(n),t):m.Zero(t)):m.Zero(t)}},num:null,m:null,_n:null,_i:null,_str:null,_simpl:!1,dispose:function(){var n=this;return n._n&&n===n._n._n&&(n._n._n=null),n._i&&n===n._i._i&&(n._i._i=null),n.num=null,n.m=null,n._n=null,n._i=null,n._str=null,n},isInt:function(){return!0},equ:function(n){var t=this,e=J.Arithmetic;return Nn(n,[m,Z])?e.equ(t.num,t.wrap(n.num)):Nn(n,_)?n.equ(t.num):e.isNumber(n)?e.equ(t.num,t.wrap(e.num(n))):!!On(n)&&n===t.toString()},gt:function(n){var t=J.Arithmetic;return Nn(n,[m,Z])?t.gt(this.num,n.num):Nn(n,_)?n.lt(this.num):!!t.isNumber(n)&&t.gt(this.num,n)},gte:function(n){var t=J.Arithmetic;return Nn(n,[m,Z])?t.gte(this.num,n.num):Nn(n,_)?n.lte(this.num):!!t.isNumber(n)&&t.gte(this.num,n)},lt:function(n){var t=J.Arithmetic;return Nn(n,[m,Z])?t.lt(this.num,n.num):Nn(n,_)?n.gt(this.num):!!t.isNumber(n)&&t.lt(this.num,n)},lte:function(n){var t=J.Arithmetic;return Nn(n,[m,Z])?t.lte(this.num,n.num):Nn(n,_)?n.gte(this.num):!!t.isNumber(n)&&t.lte(this.num,n)},abs:function(){return this},neg:function(){var n=this;return null==n._n&&(n._n=m(rt(n.num,n.m.num),n.m,!0),n._n._n=n),n._n},inv:function(){var n=this;return null==n._i&&(n._i=m(lt(n.num,n.m.num),n.m,!0),n._i._i=n),n._i},add:function(n){var t=this,e=J.Arithmetic;return Nn(n,[m,Z])?m(it(t.num,n.num,t.m.num),t.m,!0):Nn(n,_)?n.add(t.num):e.isNumber(n)?m(it(t.num,e.num(n),t.m.num),t.m,!0):t},sub:function(n){var t=J.Arithmetic;return Nn(n,[m,Z])||t.isNumber(n)?this.add(m(n,this.m).neg()):Nn(n,_)?n.neg().add(this.num):this},mul:function(n){var t=this,e=J.Arithmetic;return Nn(n,[m,Z])?m(ut(t.num,n.num,t.m.num),t.m,!0):Nn(n,_)?n.mul(t.num):e.isNumber(n)?m(ut(t.num,e.num(n),t.m.num),t.m,!0):t},div:function(n){var t=this,e=J.Arithmetic;return Nn(n,[m,Z])||e.isNumber(n)?t.mul(m(n,t.m).inv()):Nn(n,v)?v(t).div(n):Nn(n,p)?p(t).div(n):t},mod:function(n){var t=this,e=J.Arithmetic;return Nn(n,[m,Z])?m(e.mod(t.num,n.num),t.m):Nn(n,v)?v(t).mod(n):Nn(n,p)?p(t).mod(n):e.isNumber(n)?m(e.mod(t.num,n),t.m):t},divmod:function(n){return[this.div(n),this.mod(n)]},divides:function(n){var t=J.Arithmetic,e=t.O;return!t.equ(e,this.num)&&(!(!Nn(n,m)||!this.m.isPrime())||(Nn(n,Z)?t.equ(e,t.mod(n.num,this.num)):!!Nn(n,_)||!!t.isNumber(n)&&t.equ(e,t.mod(t.num(n),this.num))))},integer:function(n){return!0===n?this.num:this},pow:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).lt(t.O)?null:n.equ(t.I)?this:m(st(this.num,n.num,this.m.num),this.m,!0)},rad:function(n){var t,e,r,i=J.Arithmetic;return(n=Z.cast(n)).lt(i.I)?null:n.equ(i.I)?this:m((t=this.num,e=n.num,r=this.m.num,(i=J.Arithmetic).O,n=i.I,st(t,Mt(e,i.sub(r,n))[1],r)),this.m,!0)},wrap:function(n){var t=this.m.num,e=J.Arithmetic;return n=e.mod(n,t),e.lt(n,e.O)&&(n=e.add(n,t)),n},simpl:function(){var n=this;J.Arithmetic;return n._simpl||(n.num=n.wrap(n.num),n._simpl=!0),n},valueOf:function(){return J.Arithmetic.val(this.num)},toString:function(){return null==this._str&&(this._str=String(this.num)),this._str},toDec:function(n){var t=this.toString();return wn(n)&&0<n&&(t+="."+new Array(n+1).join("0")),t}})).cast=function(n,t){return t=Z.cast(t),ke(function(n){return Nn(n,m)&&t.equ(n.m)},function(n){return On(n)?m.fromString(n,t):new m(n,t)})(n)},(p=J.Rational=n(f,{constructor:function n(){var t,e,r=this,i=arguments,u=n.autoSimplify,l=J.Arithmetic,s=l.O,o=l.I;if(i.length&&(qn(i[0])||An(i[0]))&&(i=i[0]),e=2<i.length&&!0===i[2],i=1<i.length?(t=i[0],i[1]):1===i.length?(t=i[0],null):t=null,!Nn(r,n))return new n(t,i,e);if(Nn(t,a)&&(t=t.c()),Nn(i,a)&&(i=i.c()),Nn(t,[Z,m])&&(t=t.num),Nn(i,[Z,m])&&(i=i.num),Nn(t,v)&&(t=t.real()),Nn(t,n)&&(e=t._simpl,i=t.den,t=t.num),null==i&&(i=o),null==t&&(t=s),t=l.num(t),i=l.num(i),l.equ(s,i))throw new Error("Zero denominator in Abacus.Rational!");r.num=l.abs(t),r.den=l.abs(i),l.equ(s,r.num)&&(r.den=o),(l.lt(s,t)&&l.gt(s,i)||l.lt(s,i)&&l.gt(s,t))&&(r.num=l.neg(r.num)),e?r._simpl=!0:u&&r.simpl()},__static__:{autoSimplify:!0,O:null,I:null,J:null,Zero:function(){return null==p.O&&(p.O=p(J.Arithmetic.O,J.Arithmetic.I,!0)),p.O},One:function(){return null==p.I&&(p.I=p(J.Arithmetic.I,J.Arithmetic.I,!0)),p.I},MinusOne:function(){return null==p.J&&(p.J=p(J.Arithmetic.J,J.Arithmetic.I,!0)),p.J},EPS:null,Epsilon:function(n){return null!=n?p.EPS=!0===n?p.fromString(1e-6.toString()):p.fromString(n.toString()):null==p.EPS&&(p.EPS=p.fromString(1e-6.toString())),p.EPS},hasInverse:function(){return!0},cast:null,gcd:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,e=J.Arithmetic,r=En(function(n,t){return e.mul(n,t.den)},e.I,t);return p(Nt(Dn(t.length,function(n){return e.mul(e.div(r,t[n].den),t[n].num)})),r)},xgcd:function(){var e,t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,r=J.Arithmetic,i=r.I;if(t.length)return e=En(function(n,t){return r.mul(n,t.den)},i,t),Mt(Dn(t.length,function(n){return r.mul(r.div(e,t[n].den),t[n].num)})).map(function(n,t){return 0===t?p(n,e):p(n,i,!0)})},lcm:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,e=J.Arithmetic,r=En(function(n,t){return e.mul(n,t.den)},e.I,t);return p(Zt(Dn(t.length,function(n){return e.mul(e.div(r,t[n].den),t[n].num)})),r)},max:Te,min:Pe,rnd01:function(n){var t,e,r,i,u=J.Arithmetic.II;for(null==n&&(n=15),n=J.Math.rndInt(0,Q.abs(+n)),t=0,e=p.Zero(),r=p.One();t<n&&e.lte(r);)i=r.add(e).div(u),J.Math.rnd()<.5?r=i:e=i,t++;return e},rnd:function(n,t,e){var r;return n=p.cast(n),(t=p.cast(t)).lt(n)&&(r=n,n=t,t=r),n.equ(t)?n:n.add(p.rnd01(e).mul(t.sub(n)))},fromIntRem:function(n,t,e){var r=J.Arithmetic;return n=r.num(n),t=r.num(t),e=r.num(e),p(r.add(t,r.mul(n,e)),e)},fromContFrac:function(n){var t,e,r=J.Arithmetic,i=r.O,u=r.I,l=i;if(qn(n))for(e=n.length-1;0<=e;)t=u,u=l,l=t,u=r.add(u,r.mul(l,n[e--]));return r.equ(i,l)?null:p(u,l)},fromDec:function(n){n=function(n,t){var e,r,i,u,l,s,o,m,c=J.Arithmetic,f=c.O,a=c.I,h=c.num,d=!1,g=null,_=null;if(!(u=(n=H(String(n))).match(tn)))return null;if(u[1]&&(d=!0),e=h(u[2]),o=[f,a],n=h(10),!u[3]||!u[4]&&!u[5])return o[0]=d?c.neg(e):e,u[6]&&(s=h(u[6].slice(1)),c.lt(s,f)?o[1]=c.pow(n,c.neg(s)):o[0]=c.mul(o[0],c.pow(n,s))),o;if(u[4]&&(g=u[4]),u[5]){for(m=!0,l=(_=u[5].slice(1,-1)).length-1;0<=l;l--)if("0"!==_.charAt(l)){m=!1;break}m&&(_=null)}if(_){if(g){for(;g.length>=_.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=Nt(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=J.Arithmetic,u="+",l=p.Zero();if(!(n=H(String(n))).length)return l;if("+"!==n.charAt(0)&&"-"!==n.charAt(0)||(u=n.charAt(0),n=H(n.slice(1))),!n.length)return l;if("("===n.charAt(0)&&")"===n.charAt(n.length-1)&&(n=H(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<n.length?i.num(n[1]):i.I;return"-"===u&&(e=i.neg(e)),p(e,r)}},num:null,den:null,_n:null,_i:null,_str:null,_strp:null,_tex:null,_cfr:null,_dec:null,_int:null,_rem:null,_simpl:!1,dispose:function(){var n=this;return n._n&&n===n._n._n&&(n._n._n=null),n._i&&n===n._i._i&&(n._i._i=null),n.num=null,n.den=null,n._n=null,n._i=null,n._str=null,n._strp=null,n._tex=null,n._cfr=null,n._dec=null,n._int=null,n._rem=null,n._simpl=null,n},isInt:function(){var n=J.Arithmetic;return this._simpl?n.equ(n.I,this.den):n.equ(n.O,n.mod(this.num,this.den))},equ:function(n,t){var e=this,r=J.Arithmetic;return Nn(n,p)?!0===t?r.equ(e.num,n.num)&&r.equ(e.den,n.den):r.equ(r.mul(e.num,n.den),r.mul(n.num,e.den)):Nn(n,[Z,m])?!0===t?r.equ(e.num,n.num)&&r.equ(e.den,r.I):r.equ(e.num,r.mul(n.num,e.den)):Nn(n,_)?n.equ(e):r.isNumber(n)?!0===t?r.equ(e.num,n)&&r.equ(e.den,r.I):r.equ(e.num,r.mul(e.den,n)):!!On(n)&&(n===e.toString()||n===e.toTex()||n===e.toDec())},gt:function(n){var t=this,e=J.Arithmetic;return Nn(n,p)?e.gt(e.mul(t.num,n.den),e.mul(n.num,t.den)):Nn(n,[Z,m])?e.gt(t.num,e.mul(n.num,t.den)):Nn(n,_)?n.lt(t):!!e.isNumber(n)&&e.gt(t.num,e.mul(t.den,n))},gte:function(n){var t=this,e=J.Arithmetic;return Nn(n,p)?e.gte(e.mul(t.num,n.den),e.mul(n.num,t.den)):Nn(n,[Z,m])?e.gte(t.num,e.mul(n.num,t.den)):Nn(n,_)?n.lte(t):!!e.isNumber(n)&&e.gte(t.num,e.mul(t.den,n))},lt:function(n){var t=this,e=J.Arithmetic;return Nn(n,p)?e.lt(e.mul(t.num,n.den),e.mul(n.num,t.den)):Nn(n,[Z,m])?e.lt(t.num,e.mul(n.num,t.den)):Nn(n,_)?n.gt(t):!!e.isNumber(n)&&e.lt(t.num,e.mul(t.den,n))},lte:function(n){var t=this,e=J.Arithmetic;return Nn(n,p)?e.lte(e.mul(t.num,n.den),e.mul(n.num,t.den)):Nn(n,[Z,m])?e.lte(t.num,e.mul(n.num,t.den)):Nn(n,_)?n.gte(t):!!e.isNumber(n)&&e.lte(t.num,e.mul(t.den,n))},abs:function(){var n=J.Arithmetic;return p(n.abs(this.num),this.den,this._simpl)},neg:function(){var n=this,t=J.Arithmetic;return null==n._n&&(n._n=p(t.neg(n.num),n.den,n._simpl),n._n._n=n),n._n},inv:function(){var n=this;return null==n._i&&(n._i=p(n.den,n.num,n._simpl),n._i._i=n),n._i},rev:function(){return this.inv()},add:function(n){var t=this,e=J.Arithmetic;if(Nn(n,v)){if(!n.isReal())return n.add(t);n=n.real()}return Nn(n,p)?e.equ(t.den,n.den)?p(e.add(t.num,n.num),t.den):p(e.add(e.mul(t.num,n.den),e.mul(n.num,t.den)),e.mul(t.den,n.den)):Nn(n,[Z,m])?e.equ(t.den,e.I)?p(e.add(t.num,n.num),t.den):p(e.add(t.num,e.mul(t.den,n.num)),t.den):Nn(n,_)?n.add(t):e.isNumber(n)?e.equ(t.den,e.I)?p(e.add(t.num,n),t.den):p(e.add(t.num,e.mul(t.den,n)),t.den):t},sub:function(n){var t=this,e=J.Arithmetic;if(Nn(n,v)){if(!n.isReal())return v(t).sub(n);n=n.real()}return Nn(n,p)?e.equ(t.den,n.den)?p(e.sub(t.num,n.num),t.den):p(e.sub(e.mul(t.num,n.den),e.mul(n.num,t.den)),e.mul(t.den,n.den)):Nn(n,[Z,m])?e.equ(t.den,e.I)?p(e.sub(t.num,n.num),t.den):p(e.sub(t.num,e.mul(t.den,n.num)),t.den):Nn(n,_)?n.neg().add(t):e.isNumber(n)?e.equ(t.den,e.I)?p(e.sub(t.num,n),t.den):p(e.sub(t.num,e.mul(t.den,n)),t.den):t},mul:function(n){var t=this,e=J.Arithmetic;if(Nn(n,v)){if(!n.isReal())return n.mul(t);n=n.real()}return Nn(n,p)?p(e.mul(t.num,n.num),e.mul(t.den,n.den)):Nn(n,[Z,m])?p(e.mul(t.num,n.num),t.den):Nn(n,_)?n.mul(t):e.isNumber(n)?p(e.mul(t.num,n),t.den):t},div:function(n){var t=this,e=J.Arithmetic;if(Nn(n,v)){if(!n.isReal())return v(t).div(n);n=n.real()}return Nn(n,R)?n.inv().mul(t):Nn(n,p)?p(e.mul(t.num,n.den),e.mul(t.den,n.num)):Nn(n,[Z,m])?p(t.num,e.mul(t.den,n.num)):e.isNumber(n)?p(t.num,e.mul(t.den,n)):t},mod:function(n,t){var e=this,r=J.Arithmetic;return Nn(n,v)&&(n=n.real()),Nn(n,[p,Z,m])?e.sub(n.mul(Nn(t,p)?t:e.div(n).round())):r.isNumber(n)?e.sub(r.mul(n,(Nn(t,p)?t:e.div(n).round()).num)):e},divmod:function(n){var t=this.div(n).round();return[t,this.mod(n,t)]},divides:function(n){return!this.equ(J.Arithmetic.O)},pow:function(n){var t,e,r=this,i=J.Arithmetic,u=i.O,l=i.I;if(n=Z.cast(n),t=r.num,e=r.den,n.lt(u)){if(i.equ(u,t))throw new Error("Zero denominator from negative power in Abacus.Rational!");t=r.den,e=r.num,n=n.neg()}return i.equ(u,t)?p.Zero():n.equ(u)?p.One():n.equ(l)?p(t,e,r._simpl):p(i.pow(t,n.num),i.pow(e,n.num),r._simpl)},rad:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).equ(t.I)?this:this.lt(t.O)&&n.mod(t.II).equ(t.O)?v(this).rad(n):ht(this,n)},simpl:function(){var n,t=this,e=J.Arithmetic,r=e.I;return t._simpl||(e.equ(e.O,t.num)?t.den=r:e.equ(e.J,t.num)||e.equ(r,t.num)||e.equ(r,t.den)||(n=Nt(t.num,t.den),e.equ(r,n)||(t.num=e.div(t.num,n),t.den=e.div(t.den,n),t._str=null,t._strp=null,t._tex=null)),t._simpl=!0),t},round:function(n){n=!1!==n;var t=this,e=J.Arithmetic,r=n&&e.gt(e.O,t.num)?e.J:e.I;return p(e.mul(r,e.div(e.add(e.mul(n?e.abs(t.num):t.num,e.II),t.den),e.mul(t.den,e.II))),e.I,!0)},integer:function(n){var t=this,e=J.Arithmetic;return null==t._int&&(t._int=p(e.div(t.num,t.den),e.I,!0)),!0===n?t._int.num:t._int},remainder:function(n){var t=this,e=J.Arithmetic;return null==t._rem&&(t._rem=p(e.mod(t.num,t.den),e.I,!0)),!0===n?t._rem.num:t._rem},approximate:function(n){var t,e,r,i,u,l,s,o,m,c,f=this.num,a=this.den,h=null,d=null,g=J.Arithmetic,_=g.O,v=g.I;for(n=g.num(n),c=this.lt(_),f=g.abs(f),m=g.div(f,a),f=g.mod(f,a),t=_,i=r=e=v;g.lte(e,n)&&g.lte(i,n);){if(u=g.add(t,r),l=g.add(e,i),s=g.mul(f,l),o=g.mul(a,u),g.equ(s,o)){if(g.lte(l,n)){h=u,d=l;break}if(g.gt(i,e)){h=r,d=i;break}h=t,d=e;break}g.gt(s,o)?(t=u,e=l):(r=u,i=l)}return null!=h&&null!=d||(d=g.gt(e,n)?(h=r,i):(h=t,e)),new p(c?g.neg(g.add(h,g.mul(m,d))):g.add(h,g.mul(m,d)),d)},tuple:function(){return[this.num,this.den]},toContFrac:function(){var n,t,e,r,i,u=this,l=J.Arithmetic,s=l.O;if(null==u._cfr){for(n=u.num,t=u.den,i=[];!l.equ(s,t);)r=l.div(n,t),i.push(r),e=n,n=t,t=l.sub(e,l.mul(r,t));u._cfr=i}return u._cfr.slice()},toDec:function(n){var t,e,r,i,u,l,s,o=this;if(null==o._dec&&(o._dec=function(n,t){var e,r,i,u,l,s,o,m,c,f,a=J.Arithmetic,h=a.O;if(a.equ(h,t))return null;for(h=a.lt(h,n)&&a.gt(h,t)||a.lt(h,t)&&a.gt(h,n),n=a.abs(n),t=a.abs(t),e=a.div(n,t),r=a.mod(n,t),n=(h?"-":"")+String(e),u=[],o=a.num(10),s=(h=Ct(function(n){return a.mod(a.mul(o,n),t)},r,function(n,t){return a.equ(n,t)}))[l=0]+h[1];l<s;l++)i=a.mul(o,r),e=a.div(i,t),r=a.mod(i,t),u.push(String(e));if((m=u.slice(h[1]).join("")).length){for(f=!0,l=m.length-1;0<=l;l--)if("0"!==m.charAt(l)){f=!1;break}m=f?"":"["+m+"]"}if((c=u.slice(0,h[1]).join("")).length){for(f=!0,l=c.length-1;0<=l;l--)if("0"!==c.charAt(l)){f=!1;break}f&&!m.length&&(c="")}return n+(c.length||m.length?".":"")+c+m}(o.num,o.den)),wn(n)&&0<=n){if(n=Q.ceil(n),-1===(e=(t=o._dec).indexOf(".")))return 0<n?t+"."+new Array(n+1).join("0"):t;if(-1!==(u=t.indexOf("[",e+1))&&(r=t.slice(u+1,-1),t=t.slice(0,u)+r,r.length&&t.length-e-1<=n&&(t+=new Array(Q.floor((n-(t.length-e-1))/r.length)+2).join(r))),(r=t.length-e-1)<n)t+=new Array(n-r+1).join("0");else if(n<r){for(r=t.charAt(e+1+n),i=parseInt(r,10),u=(t=t.slice(0,e+1+n).split("")).length-1,l="-"===t[0]?1:0,s=5<=i,e===u&&u--;s&&l<=u;)s=9===(i=parseInt(t[u],10)),t[u]=String(s?0:i+1),e===--u&&u--;s&&t.splice(l,0,"1"),"."===t[t.length-1]&&t.pop(),t=t.join("")}return t}return o._dec},valueOf:function(){var n=J.Arithmetic;return n.val(this.num)/n.val(this.den)},toString:function(n){var t=this,e=J.Arithmetic;return null==t._str&&(t._str=String(t.num)+(e.equ(e.I,t.den)?"":"/"+String(t.den)),t._strp=e.equ(e.I,t.den)?String(t.num):(e.gt(e.O,t.num)?"-":"")+"("+String(e.abs(t.num))+"/"+String(t.den)+")"),n?t._strp:t._str},toTex:function(){var n=this,t=J.Arithmetic;return null==n._tex&&(n._tex=t.equ(t.I,n.den)?Mn(n.num):(t.gt(t.O,n.num)?"-":"")+"\\frac{"+Mn(t.abs(n.num))+"}{"+Mn(n.den)+"}"),n._tex}})).cast=ke([p],function(n){return On(n)?p.fromString(n):new p(n)}),(v=J.Complex=n(f,{constructor:function n(){var t,e=arguments;if(e.length&&(qn(e[0])||An(e[0]))&&(e=e[0]),e=1<e.length?(t=e[0],e[1]):(t=1===e.length?e[0]:p.Zero(),p.Zero()),Nn(t,a)&&(t=t.c()),Nn(e,a)&&(e=e.c()),Nn(t,n)&&(e=t.imag(),t=t.real()),!Nn(this,n))return new n(t,e);this.re=p.cast(t),this.im=p.cast(e)},__static__:{Symbol:"i",O:null,I:null,J:null,i:null,j:null,Zero:function(){return null==v.O&&(v.O=v(p.Zero(),p.Zero())),v.O},One:function(){return null==v.I&&(v.I=v(p.One(),p.Zero())),v.I},MinusOne:function(){return null==v.J&&(v.J=v(p.MinusOne(),p.Zero())),v.J},Img:function(){return null==v.i&&(v.i=v(p.Zero(),p.One())),v.i},MinusImg:function(){return null==v.j&&(v.j=v(p.Zero(),p.MinusOne())),v.j},hasInverse:function(){return!0},cast:null,gcd:Et,xgcd:function n(){var t,e,r,i,u,l,s,o,m=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,c=m.length,f=J.Arithmetic.O,a=v.One(),h=v.One();if(0!==c){if(t=m[0],1===c)return t.real().abs().lt(t.imag().abs())&&(t=t.mul(v.Img()),a=a.mul(v.Img())),t.real().lt(f)&&(t=t.neg(),a=a.neg()),[t,a];if(o=2===c?[m[1],v.One()]:n(G.call(m,1)),e=o[0],t.equ(f))return e.real().abs().lt(e.imag().abs())&&(e=e.mul(v.Img()),a=a.mul(v.Img()),h=h.mul(v.Img())),e.real().lt(f)&&(e=e.neg(),a=a.neg(),h=h.neg()),Dn(o.length+1,function(n){return 0===n?e:1===n?a:o[n-1].mul(h)});if(e.equ(f))return t.real().abs().lt(t.imag().abs())&&(t=t.mul(v.Img()),a=a.mul(v.Img()),h=h.mul(v.Img())),t.real().lt(f)&&(t=t.neg(),a=a.neg(),h=h.neg()),Dn(o.length+1,function(n){return 0===n?t:1===n?a:o[n-1].mul(h)});for(r=v.One(),i=v.Zero(),u=v.Zero(),l=v.One();;){if(t=(s=t.divmod(e))[1],r=r.sub(s[0].mul(u)),i=i.sub(s[0].mul(l)),t.equ(f))return e.real().abs().lt(e.imag().abs())&&(e=e.mul(v.Img()),a=a.mul(v.Img()),h=h.mul(v.Img())),e.real().lt(f)&&(e=e.neg(),a=a.neg(),h=h.neg()),u=u.mul(a),l=l.mul(h),Dn(o.length+1,function(n){return 0===n?e:1===n?u:o[n-1].mul(l)});if(e=(s=e.divmod(t))[1],u=u.sub(s[0].mul(r)),l=l.sub(s[0].mul(i)),e.equ(f))return t.real().abs().lt(t.imag().abs())&&(t=t.mul(v.Img()),a=a.mul(v.Img()),h=h.mul(v.Img())),t.real().lt(f)&&(t=t.neg(),a=a.neg(),h=h.neg()),r=r.mul(a),i=i.mul(h),Dn(o.length+1,function(n){return 0===n?t:1===n?r:o[n-1].mul(i)})}}},lcm:function(){var n,t,e=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,r=e.length,i=J.Arithmetic.O;if(r<=1)return 1===r?e[0]:v.Zero();if(e[0].equ(i)||e[1].equ(i))return v.Zero();for(t=Dt(e[0],e[1]),n=2;n<r;n++){if(e[n].equ(i))return v.Zero();t=Dt(t,e[n])}return t},max:Te,min:Pe,rnd:function(n,t,e){return n=v.cast(n),t=v.cast(t),v(p.rnd(n.real(),t.real(),e),p.rnd(n.imag(),t.imag(),e))},fromString:function(n){var t,e,r,i=v.Zero();return(n=H(String(n))).length&&(n=n.match(/^\(?(?:([\+\-])?\s*\(?((?:\\frac\{-?\d+\}\{-?\d+\})|(?:-?\d+(?:\.\d*(?:\[\d+\])?)?(?:e-?\d+)?(?:\/-?\d+)?))?\)?(\*?[ij])?)(?:\s*([\+\-])?\s*(?:\(?((?:\\frac\{-?\d+\}\{-?\d+\})|(?:-?\d+(?:\.\d*(?:\[\d+\])?)?(?:e-?\d+)?(?:\/-?\d+)?))\)?\*?)?([ij]))?\)?$/))?(n=n[3]&&!n[6]?(r=n[2]?n[2]:n[3]?"1":"0",e=n[5]||"0",t="-"===n[1]?"-":"","-"===n[4]?"-":""):(r=n[5]?n[5]:n[6]?"1":"0",e=n[2]||"0",t="-"===n[4]?"-":"","-"===n[1]?"-":""),v(p.fromString(n+e),p.fromString(t+r))):i}},re:null,im:null,_n:null,_i:null,_c:null,_str:null,_strp:null,_tex:null,_dec:null,_norm:null,_int:null,_rem:null,_simpl:!1,dispose:function(){var n=this;return n._n&&n===n._n._n&&(n._n._n=null),n._i&&n===n._i._i&&(n._i._i=null),n._c&&n===n._c._c&&(n._c._c=null),n.re=null,n.im=null,n._n=null,n._i=null,n._c=null,n._str=null,n._strp=null,n._tex=null,n._dec=null,n._norm=null,n._int=null,n._rem=null,n},isReal:function(){var n=J.Arithmetic;return this.im.equ(n.O)},isImag:function(){var n=J.Arithmetic.O;return this.re.equ(n)&&!this.im.equ(n)},isInt:function(){return this.isReal()&&this.re.isInt()},isGauss:function(){return this.re.isInt()&&this.im.isInt()},equ:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?t.re.equ(n.re)&&t.im.equ(n.im):Nn(n,f)||e.isNumber(n)?t.re.equ(n)&&t.im.equ(e.O):Nn(n,_)?n.equ(t):!!On(n)&&(n===t.toString()||n===t.toTex()||n===t.toDec())},gt:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?t.isReal()&&n.isReal()?t.re.gt(n.re):t.isImag()&&n.isImag()?t.im.gt(n.im):t.norm().gt(n.norm()):(Nn(n,f)||e.isNumber(n))&&t.isReal()?t.re.gt(n):!!Nn(n,_)&&n.lt(t)},gte:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?t.isReal()&&n.isReal()?t.re.gte(n.re):t.isImag()&&n.isImag()?t.im.gte(n.im):t.norm().gte(n.norm()):(Nn(n,f)||e.isNumber(n))&&t.isReal()?t.re.gte(n):!!Nn(n,_)&&n.lte(t)},lt:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?t.isReal()&&n.isReal()?t.re.lt(n.re):t.isImag()&&n.isImag()?t.im.lt(n.im):t.norm().lt(n.norm()):(Nn(n,f)||e.isNumber(n))&&t.isReal()?t.re.lt(n):!!Nn(n,_)&&n.gt(t)},lte:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?t.isReal()&&n.isReal()?t.re.lte(n.re):t.isImag()&&n.isImag()?t.im.lte(n.im):t.norm().lte(n.norm()):(Nn(n,f)||e.isNumber(n))&&t.isReal()?t.re.lte(n):!!Nn(n,_)&&n.gte(t)},real:function(){return this.re},imag:function(){return this.im},norm:function(){var n,t,e=this,r=J.Arithmetic.II;return null==e._norm&&(n=e.re,t=e.im,e._norm=n.pow(r).add(t.pow(r))),e._norm},abs:function(){return v(this.re.abs(),this.im.abs())},neg:function(){var n=this;return null==n._n&&(n._n=v(n.re.neg(),n.im.neg()),n._n._n=n),n._n},conj:function(){var n=this;return null==n._c&&(n._c=v(n.re,n.im.neg()),n._c._c=n),n._c},rev:function(){return v(this.im,this.re)},inv:function(){var n=this,t=J.Arithmetic;if(null==n._i){if(n.equ(t.O))throw new Error("Division by zero in inverse in Abacus.Complex!");t=n.norm(),n._i=v(n.re.div(t),n.im.div(t).neg()),n._i._i=n}return n._i},add:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?v(t.re.add(n.re),t.im.add(n.im)):Nn(n,f)||e.isNumber(n)?v(t.re.add(n),t.im):Nn(n,_)?n.add(t):t},sub:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)?v(t.re.sub(n.re),t.im.sub(n.im)):Nn(n,f)||e.isNumber(n)?v(t.re.sub(n),t.im):Nn(n,_)?n.neg().add(t):t},mul:function(n){var t,e,r,i,u,l=this,s=J.Arithmetic;return Nn(n,v)?l.isReal()?v(n.re.mul(l.re),n.im.mul(l.re)):l.isImag()?v(n.im.mul(l.im).neg(),n.re.mul(l.im)):n.isReal()?v(l.re.mul(n.re),l.im.mul(n.re)):n.isImag()?v(l.im.mul(n.im).neg(),l.re.mul(n.im)):(e=l.re,r=n.re,i=l.im,u=n.im,t=e.mul(r.add(u)),u=u.mul(e.add(i)),e=r.mul(i.sub(e)),v(t.sub(u),t.add(e))):Nn(n,f)||s.isNumber(n)?v(l.re.mul(n),l.im.mul(n)):Nn(n,_)?n.mul(l):l},div:function(n){var t,e,r,i,u,l=this,s=J.Arithmetic,o=s.O;if(Nn(n,v)){if(n.equ(o))throw new Error("Division by zero in Abacus.Complex!");return n.isReal()?v(l.re.div(n.re),l.im.div(n.re)):n.isImag()?v(l.im.div(n.im),l.re.div(n.im).neg()):(t=n.norm(),e=l.re,r=n.re.div(t),i=l.im,u=n.im.div(t).neg(),t=e.mul(r.add(u)),u=u.mul(e.add(i)),e=r.mul(i.sub(e)),v(t.sub(u),t.add(e)))}if(Nn(n,f)||s.isNumber(n)){if(Nn(n,f)&&n.equ(o)||s.isNumber(n)&&s.equ(o,n))throw new Error("Division by zero in Abacus.Complex!");return v(l.re.div(n),l.im.div(n))}return l},mod:function(n,t){var e=J.Arithmetic;return Nn(n,f)||e.isNumber(n)?this.sub((Nn(t,v)?t:this.div(n).round()).mul(n)):this},divmod:function(n){var t=this.div(n).round();return[t,this.mod(n,t)]},divides:function(n){return!this.equ(J.Arithmetic.O)},pow:function(n){var t,e,r=this,i=J.Arithmetic,u=i.O,l=i.I;if((n=Z.cast(n)).gt(un))return null;if(r.equ(u)){if(n.lt(u))throw new Error("Zero denominator in negative power in Abacus.Complex!");return v.Zero()}if(n.equ(u))return v.One();if(n.equ(l))return r;for(n.lt(u)&&(r=r.inv(),n=n.neg()),n=i.val(n.num),e=r,t=v.One();0!==n;)1&n&&(t=t.mul(e)),n>>=1,e=e.mul(e);return t},rad:function(n){var t=this,e=J.Arithmetic;return(n=Z.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))):ht(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=J.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=J.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=J.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")),wn(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<n&&(r+="."+new Array(n+1).join("0"))),r):e._dec}})).cast=ke([v],function(n){return On(n)?v.fromString(n):new v(n)}),S=n(a,{constructor:function n(t){if(!Nn(this,n))return new n(t);this.sym=Nn(t,n)?t.sym:n.fromString(t,!1)},__static__:{fromString:function(n,t){var e;return-1!==(e=(n=H(String(n))).indexOf("_"))&&"{"===n.charAt(e+1)&&"}"===n.charAt(n.length-1)&&(n=n.slice(0,e)+"_"+n.slice(e+2,-1)),!1!==t?new S(n):n}},sym:null,_tex:null,dispose:function(){return this.sym=null,this._tex=null,this},c:function(){return v.One()},isConst:function(){return!1},isReal:function(){return!0},isImag:function(){return!1},real:function(){return this},imag:function(){return N()},equ:function(n){return Nn(n,S)?this.sym===n.sym:Nn(n,a)?n.equ(this):!!On(n)&&(n===this.toString()||n===this.toTex())},neg:function(){return C(this,-1)},inv:function(){return d(1,this)},add:function(n){return N([this,n])},sub:function(n){return N([this,n.neg()])},mul:function(n){var t=this;return Nn(n,S)?t.sym===n.sym?h(t,2):C([t,n],1):Nn(n,f)?C(t,n):Nn(n,a)?n.mul(t):t},div:function(n){return d(this,n)},pow:function(n){return h(this,n)},rad:function(n){return h(this,p(1,n))},d:function(n){return null==n&&(n=1),(n=+n)<0?null:1===n?v.One():v.Zero()},evaluate:function(n){return n=n||{},v.cast(n[this.sym]||0)},toString:function(){return this.sym},toTex:function(){return null==this._tex&&(this._tex=Zn(this.sym)),this._tex}}),h=n(a,{constructor:function n(t,e){var r=this;if(!Nn(r,n))return new n(t,e);Nn(t,n)?(r.base=t.base,r.exp=t.exp):Nn(t,[_,x])?(r.base=t,r.exp=Nn(e,[_,x])?e:p.cast(null==e?1:e)):On(t)?(t=n.fromString(t,!1),r.base=t[0],r.exp=t[1]):(r.base=v.One(),r.exp=p.One())},__static__:{Symbol:S,fromString:function(n,t){var e,r;return-1!==(e=(n=H(String(n))).indexOf("^"))?("{"===(r=n.slice(e+1)).charAt(0)&&"}"===r.charAt(r.length-1)&&(r=H(r.slice(1,-1))),n=n.slice(0,e)):r="1",n=S.fromString(H(n)),r=p.fromString(r),!1!==t?new h(n,r):[n,r]}},base:null,exp:null,_str:null,_tex:null,dispose:function(){var n=this;return n.base=null,n.exp=null,n._str=null,n._tex=null,n},c:function(){return v.One()},isConst:function(){return this.base.isConst()&&this.exp.isConst()},isReal:function(){return this.base.isReal()&&this.exp.isReal()},isImag:function(){return this.base.isImag()&&this.exp.isReal()},real:function(){return h(this.base.real(),this.exp.real())},imag:function(){return h(this.base.imag(),this.exp.imag())},equ:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.base.equ(n.base)&&t.exp.equ(n.exp):Nn(n,[x,S,f])||e.isNumber(n)?t.base.equ(n)&&t.exp.equ(e.I):Nn(n,_)?n.equ(t):!!On(n)&&(n===t.toString()||n===t.toTex())},gt:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.exp.equ(n.exp)&&t.base.gt(n.base)||t.base.equ(n.base)&&t.exp.gt(n.exp):Nn(n,[x,S])?t.base.equ(n)&&t.exp.gt(e.I):Nn(n,f)||e.isNumber(n)?t.exp.equ(e.I)&&t.base.gt(n)||t.base.equ(n)&&t.exp.gt(e.I):!!Nn(n,_)&&n.lt(t)},gte:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.exp.equ(n.exp)&&t.base.gte(n.base)||t.base.equ(n.base)&&t.exp.gte(n.exp):Nn(n,[x,S])?t.base.equ(n)&&t.exp.gte(e.I):Nn(n,f)||e.isNumber(n)?t.exp.equ(e.I)&&t.base.gte(n)||t.base.equ(n)&&t.exp.gte(e.I):!!Nn(n,_)&&n.lte(t)},lt:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.exp.equ(n.exp)&&t.base.lt(n.base)||t.base.equ(n.base)&&t.exp.lt(n.exp):Nn(n,[x,S])?t.base.equ(n)&&t.exp.lt(e.I):Nn(n,f)||e.isNumber(n)?t.exp.equ(e.I)&&t.base.lt(n)||t.base.equ(n)&&t.exp.lt(e.I):!!Nn(n,_)&&n.gt(t)},lte:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.exp.equ(n.exp)&&t.base.lte(n.base)||t.base.equ(n.base)&&t.exp.lte(n.exp):Nn(n,[x,S])?t.base.equ(n)&&t.exp.lte(e.I):Nn(n,f)||e.isNumber(n)?t.exp.equ(e.I)&&t.base.lte(n)||t.base.equ(n)&&t.exp.lte(e.I):!!Nn(n,_)&&n.gte(t)},abs:function(){return Nn(this.base,S)?this:h(this.base.abs(),this.exp)},neg:function(){return C(this,-1)},conj:function(){return Nn(this.base,S)?this:h(this.base.conj(),this.exp)},inv:function(){return h(this.base,this.exp.neg())},add:function(n){var t=J.Arithmetic;return Nn(n,[f,S,h,C,x])||t.isNumber(n)?N([this,n]):Nn(n,_)?n.add(this):this},sub:function(n){var t=J.Arithmetic;return Nn(n,f)||t.isNumber(n)?N([this,t.isNumber(n)?t.neg(n):n.neg()]):Nn(n,[S,h,C,x])?N([this,n.neg()]):Nn(n,_)?n.neg().add(this):this},mul:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.base.equ(n.base)?h(t.base,t.exp.add(n.exp)):C([t,n]):Nn(n,[x,S])?t.base.equ(n)?h(t.base,t.exp.add(e.I)):C([t,n]):Nn(n,f)||e.isNumber(n)?C(t,n):Nn(n,_)?n.mul(t):t},div:function(n){var t=this,e=J.Arithmetic;return Nn(n,h)?t.base.equ(n.base)?h(t.base,t.exp.sub(n.exp)):C([t,n.inv()]):Nn(n,[x,S])?t.base.equ(n)?h(t.base,t.exp.sub(e.I)):C([t,h(n,p.MinusOne())]):Nn(n,f)||e.isNumber(n)?C(t,e.isNumber(n)?p(e.I,n):n.inv()):Nn(n,_)?n.inv().mul(t):t},pow:function(n){return h(this.base,this.exp.mul(n))},rad:function(n){return h(this.base,this.exp.div(n))},d:function(n){var t,e=this,r=J.Arithmetic,i=r.O;return null==n&&(n=1),(n=+n)<0?null:(t=e.exp.sub(n),!e.exp.lt(i)&&Nn(t,f)&&t.isReal()&&t.isInt()&&!t.gte(i)?C(1,i):C(h(e.base,t),En(function(n,t){return e.exp.sub(t).mul(n)},r.I,null,0,n-1,1)))},evaluate:function(n){var t,e=this,r=J.Arithmetic;return n=n||{},t=p.cast(Nn(e.exp,a)?e.exp.evaluate(n):e.exp).simpl(),(e=v.cast(Nn(e.base,a)?e.base.evaluate(n):e.base).simpl()).equ(r.O)?v.Zero():e.pow(t.num).rad(t.den)},toString:function(){var n=this,t=J.Arithmetic,e=t.O;return null==n._str&&(n._str=n.exp.equ(e)?"1":n.exp.equ(t.I)?n.base.toString():(Nn(n.base,S)?n.base.toString():"("+n.base.toString()+")")+(Nn(n.exp,S)||Nn(n.exp,f)&&n.exp.isReal()||Nn(n.exp,o)&&n.exp.isConst(!0)&&n.exp.c().isReal()?"^"+n.exp.toString(!0):"^("+n.exp.toString()+")")),n._str},toTex:function(){var n=this,t=J.Arithmetic,e=t.O;return null==n._tex&&(n._tex=n.exp.equ(e)?"1":n.exp.equ(t.I)?n.base.toTex():(Nn(n.base,S)?n.base.toTex():"("+n.base.toTex()+")")+("^{"+n.exp.toTex())+"}"),n._tex}}),C=n(a,{constructor:function n(t,e){var r,i,u,l=this,s=J.Arithmetic;if(!Nn(l,n))return new n(t,e);if(Nn(t,n))e=t.factors[1],l.symbol=t.symbol,l.symbolTex=t.symbolTex,t=t.factors,r=e,l.factors=c(),l.factors[1]=r,l.factors[1].equ(s.O)||n.Merge(t,l);else if(Nn(t,[S,x,h]))Nn(t,[S,x])&&(t=h(t,s.I)),r=v.cast(null==e?s.I:e),l.symbol=t.toString(),l.symbolTex=t.toTex(),l.factors=c(),l.factors[1]=r,l.factors[1].equ(s.O)||n.Merge(t,l);else if(Nn(t,f))l.symbol="1",l.symbolTex="1",l.factors=c(),l.factors[1]=v.cast(t);else if(On(t))e=v.cast(null==e?s.I:e),l.factors=c(),l.factors[1]=e,l.factors[1].equ(s.O)||n.Merge(t,l),n.Symbol(l);else if(qn(t)){if(e=v.cast(null==e?s.I:e),l.factors=c(),l.factors[1]=e,!l.factors[1].equ(s.O))for(i=0,u=t.length;i<u;i++)n.Merge(t[i],l);n.Symbol(l)}else In(t)?(e=v.cast(null==e?s.I:e),l.factors=c(),l.factors[1]=e,l.factors[1].equ(s.O)||n.Merge(t,l)):(l.factors=c(),l.factors[1]=v.cast(null==e?s.I:e)),n.Symbol(l)},__static__:{Term:h,Merge:function(n,e,r){var t,i,u,l,s=J.Arithmetic,o=s.O,m=s.I;function c(n){var t;if(On(n)){if("1"===n||!n.length)return;n=h(n)}Nn(n,h)&&"1"!==(t=n.base.toString())&&(-1===r?e.factors[t]?e.factors[t]=e.factors[t].div(n):e.factors[t]=n.inv():e.factors[t]?e.factors[t]=e.factors[t].mul(n):e.factors[t]=n,e.factors[t].exp.equ(o)&&delete e.factors[t])}if(!("1"===n||1===n||s.isNumber(n)&&s.equ(m,n)))if(Nn(n,[S,x]))c(h(n,m));else if(Nn(n,h))c(n);else if(On(n))for(i=0,u=(l=n.split("*")).length;i<u;i++)c(h(l[i]));else if(qn(n)||An(n))for(i=0,u=n.length;i<u;i++)c(n[i]);else if(In(n))for(i=0,u=(t=rn(n)).length;i<u;i++)c(Nn(n[t[i]],h)?n[t[i]]:h(t[i],n[t[i]]));return e},Symbol:function(r){var n;J.Arithmetic.I;return r._symb=null,n=r.symbols().reduce(function(n,t){var e=r.factors[t];return[n[0]+("1"===t?"":(n[0].length?"*":"")+e.toString()),n[1]+("1"===t?"":e.toTex())]},["",""]),r.symbol=n[0],r.symbolTex=n[1],r.symbol.length||(r.symbol="1"),r.symbolTex.length||(r.symbolTex="1"),r}},factors:null,symbol:null,symbolTex:null,_str:null,_tex:null,_symb:null,dispose:function(){var n=this;return n._n&&n._n._n===n&&(n._n._n=null),n.factors=null,n.symbol=null,n.symbolTex=null,n._str=null,n._tex=null,n._symb=null,n},symbols:function(){return null==this._symb&&(this._symb=rn(this.factors).sort()),this._symb},c:function(){return this.factors[1]},isConst:function(){return"1"===this.symbol},isReal:function(){var n,t=this.factors;for(n in t)if(z.call(t,n)&&!t[n].isReal())return!1;return!0},isImag:function(){var n,t=this.factors;for(n in t)if(z.call(t,n)&&!t[n].isImag())return!1;return!0},real:function(){var e=this;return C(e.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=e.factors[t].real()),n},{}),e.factors[1].real())},imag:function(){var e=this;return C(e.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=e.factors[t].imag()),n},{}),e.factors[1].imag())},equ:function(n){var t=this,e=J.Arithmetic,r=e.O;return Nn(n,S)?n.sym===t.symbol&&t.factors[1].equ(e.I):e.isNumber(n)?e.equ(r,n)?t.factors[1].equ(r):"1"===t.symbol&&t.factors[1].equ(n):Nn(n,f)?n.equ(r)?t.factors[1].equ(r):"1"===t.symbol&&t.factors[1].equ(n):Nn(n,[h,x])?n.equ(r)&&t.equ(r)||t.symbol===n.toString()&&t.factors[1].equ(e.I):Nn(n,C)?n.equ(r)&&t.equ(r)||t.symbol===n.symbol&&t.factors[1].equ(n.factors[1]):Nn(n,_)?n.equ(t):!!On(n)&&(n===t.toString()||n===t.toTex())},gt:function(n){var t=this,e=J.Arithmetic;return Nn(n,[S,h,x])&&(n=C(n)),Nn(n,N)?n.lt(t):Nn(n,C)&&"1"===t.symbol&&"1"===n.symbol?t.c().gt(n.c()):!("1"!==t.symbol||!Nn(n,f)&&!e.isNumber(n))&&t.c().gt(n)},gte:function(n){var t=this,e=J.Arithmetic;return Nn(n,[S,h,x])&&(n=C(n)),Nn(n,N)?n.lte(t):Nn(n,C)&&"1"===t.symbol&&"1"===n.symbol?t.c().gte(n.c()):!("1"!==t.symbol||!Nn(n,f)&&!e.isNumber(n))&&t.c().gte(n)},lt:function(n){var t=this,e=J.Arithmetic;return Nn(n,[S,h,x])&&(n=C(n)),Nn(n,N)?n.gt(t):Nn(n,C)&&"1"===t.symbol&&"1"===n.symbol?t.c().lt(n.c()):!("1"!==t.symbol||!Nn(n,f)&&!e.isNumber(n))&&t.c().lt(n)},lte:function(n){var t=this,e=J.Arithmetic;return Nn(n,[S,h,x])&&(n=C(n)),Nn(n,N)?n.gte(t):Nn(n,C)&&"1"===t.symbol&&"1"===n.symbol?t.c().lte(n.c()):!("1"!==t.symbol||!Nn(n,f)&&!e.isNumber(n))&&t.c().lte(n)},abs:function(){var e=this;J.Arithmetic;return C(e.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=e.factors[t].abs()),n},{}),e.factors[1].abs())},neg:function(){J.Arithmetic;return C(this.factors,this.factors[1].neg())},conj:function(){var e=this;J.Arithmetic;return C(e.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=e.factors[t].conj()),n},{}),e.factors[1].conj())},inv:function(){var e=this;J.Arithmetic;return C(e.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=e.factors[t].inv()),n},{}),e.factors[1].inv())},add:function(n){var t=this,e=J.Arithmetic;return e.isNumber(n)||Nn(n,f)?C(t.factors,t.factors[1].add(n)):Nn(n,C)?t.symbol===n.symbol?C(t.factors,t.factors[1].add(n.factors[1])):N([t,n]):Nn(n,[x,h,S])?t.symbol===n.toString()?C(t.factors,t.factors[1].add(e.I)):N([t,C(n)]):Nn(n,[N,d])?n.add(t):Nn(n,o)?n.toExpr().add(t):t},sub:function(n){var t=this,e=J.Arithmetic;return e.isNumber(n)||Nn(n,f)?C(t.factors,t.factors[1].sub(n)):Nn(n,C)?t.symbol===n.symbol?C(t.factors,t.factors[1].sub(n.factors[1])):N([t,n.neg()]):Nn(n,[x,h,S])?t.symbol===n.toString()?C(t.factors,t.factors[1].sub(e.I)):N([t,Multerm(n).neg()]):Nn(n,N)?N([t,n.neg()]):Nn(n,d)?n.neg().add(t):Nn(n,o)?N([t,n.toExpr().neg()]):t},mul:function(n){var t,e=this,r=J.Arithmetic,i=r.O;return r.isNumber(n)||Nn(n,f)?C(e.factors,e.factors[1].mul(n)):Nn(n,C)?((t=C({},e.factors[1].mul(n.factors[1]))).factors[1].equ(i)||(C.Merge(e.factors,t),C.Merge(n.factors,t)),C.Symbol(t),t):Nn(n,[x,h,S])?((t=C({},e.factors[1])).factors[1].equ(i)||(C.Merge(e.factors,t),i=(n=Nn(n,S)?h(n):n).base.toString(),t.factors[i]?t.factors[i]=t.factors[i].mul(n):t.factors[i]=n,t.factors[i].exp.equ(r.O)&&delete t.factors[i]),C.Symbol(t),t):Nn(n,[N,d])?n.mul(e):Nn(n,o)?n.toExpr().mul(e):e},div:function(n){var t,e=this,r=J.Arithmetic;return r.isNumber(n)||Nn(n,f)?C(e.factors,e.factors[1].div(n)):Nn(n,C)?((t=C({},e.factors[1].div(n.factors[1]))).factors[1].equ(O)||(C.Merge(e.factors,t),C.Merge(n.factors,t,-1)),C.Symbol(t),t):Nn(n,[x,h,S])?((t=C({},e.factors[1])).factors[1].equ(O)||(C.Merge(e.factors,t),n=Nn(n,S)?h(n):n,s=n.base.toString(),t.factors[s]?t.factors[s]=t.factors[s].div(n):t.factors[s]=n.inv(),t.factors[s].exp.equ(r.O)&&delete t.factors[s]),C.Symbol(t),t):(Nn(n,[N,d])||Nn(n,o),e)},mod:yn,divmod:yn,pow:function(e){var r=this,n=J.Arithmetic,t=n.O,n=n.I;return e=Z.cast(e),r.equ(t)?C(1,t):e.equ(t)?C(1,n):e.equ(n)?r:C(r.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=r.factors[t].pow(e)),n},{}),r.factors[1].pow(e))},rad:function(e){var r=this,n=J.Arithmetic,t=n.O,n=n.I;return e=Z.cast(e),r.equ(t)?C(1,t):e.equ(t)?null:e.equ(n)?r:C(r.symbols().reduce(function(n,t){return"1"!==t&&(n[t]=r.factors[t].rad(e)),n},{}),r.factors[1].rad(e))},d:function(n,t){var e,r,i,u,l=this.factors,s=J.Arithmetic,o=s.O,s=s.I;if(null==t&&(t=1),t=+t,n=String(n||"x"),t<0)return null;if(l[1].equ(o)||"1"===n||!z.call(l,n))return C({},o);for(e in r={},i=s,l)z.call(l,e)&&"1"!==e&&(n===e?(u=l[e].d(t),z.call(u.factors,e)&&(r[e]=u.factors[e]),i=u.c().mul(i)):r[e]=l[e]);return C(r,l[1].mul(i))},evaluate:function(e){var r=this,n=J.Arithmetic,i=n.O;n.I;return e=e||{},"1"===r.symbol?r.factors[1]:r.symbols().reduce(function(n,t){return n.equ(i)?v.Zero():n.mul("1"===t?r.factors[1]:r.factors[t].evaluate(e))},v.One())},toString:function(){var n,t=this,e=J.Arithmetic,r=e.O;return null==t._str&&((n=t.factors[1]).equ(r)?t._str="0":n.isReal()?t._str="1"===t.symbol?n.real().toString():(n.real().equ(e.J)?"-":n.real().equ(e.I)?"":n.real().toString(!0)+"*")+t.symbol:t._str="1"===t.symbol?"("+n.toString()+")":"("+n.toString()+")*"+t.symbol),t._str},toTex:function(){var n,t=this,e=J.Arithmetic,r=e.O;return null==t._tex&&((n=t.factors[1]).equ(r)?t._tex="0":n.isReal()?t._tex="1"===t.symbol?n.real().toTex():(n.real().equ(e.J)?"-":n.real().equ(e.I)?"":n.real().toTex())+t.symbolTex:t._tex="1"===t.symbol?"("+n.toTex()+")":"("+n.toTex()+")"+t.symbolTex),t._tex}}),N=J.Expr=n(a,{constructor:function n(){var t,e,r=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;if(!Nn(this,n))return new n(r);for(this.terms=c(),this.terms[1]=C(1,v.Zero()),t=0,e=r.length;t<e;t++)n.Merge(r[t],this)},__static__:{Term:C,Merge:function n(t,e){var r=J.Arithmetic,i=r.O;if(r.isNumber(t)||Nn(t,f))e.terms[1]?e.terms[1]=e.terms[1].add(t):e.terms[1]=C(1,t);else if(Nn(t,[S,h,C]))Nn(t,S)&&(t=h(t,r.I)),Nn(t,h)&&(t=C(t,r.I)),e.terms[t.symbol]?e.terms[t.symbol]=e.terms[t.symbol].add(t):"1"!==t.symbol&&t.factors[1].equ(i)||(e.terms[t.symbol]=t),"1"!==t.symbol&&e.terms[t.symbol]&&e.terms[t.symbol].factors[1].equ(i)&&delete e.terms[t.symbol];else if(Nn(t,[x]))t=C(t,r.I),e.terms[t.symbol]&&(e.terms[t.symbol]=e.terms[t.symbol].add(t)),"1"!==t.symbol&&e.terms[t.symbol]&&e.terms[t.symbol].factors[1].equ(i)&&delete e.terms[t.symbol];else if(Nn(t,[N,o])){Nn(t,o)&&(t=t.toExpr());for(var u=0,l=t.symbols(),s=l.length;u<s;u++)n(t.terms[l[u]],e)}return e},fromString:function(n){var t,e,r,i=J.Arithmetic,u=[],l=/(\(?(?:(?:[\+\-])?\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+\}?)?(?:\s*\*\s*[a-zA-Z](?:_\{?\d+\}?)?(?:\^\{?\d+\}?)?)*)?)?/g;for(n=H(String(n));r=l.exec(n);){if(!r[0].length){if(l.lastIndex<n.length){l.lastIndex++;continue}break}H(r[0]).length&&(r[2]?(e=r[2],""===(t=H(r[1]||""))||"+"===t?t="1":"-"===t&&(t="-1")):(e="1","+"===(t=H(r[1]||""))?t="1":"-"===t?t="-1":""===t&&(t="0")),(r=v.fromString(t))&&!r.equ(i.O)&&u.push(C(e,r)))}return new N(u)},cast:null},terms:null,_str:null,_tex:null,_n:null,_symb:null,dispose:function(){var n=this;return n._n&&n._n._n===n&&(n._n._n=null),n.terms=null,n._str=null,n._tex=null,n._n=null,n._symb=null,n},clone:function(){return new N(this.args())},symbols:function(){return null==this._symb&&(this._symb=rn(this.terms).sort()),this._symb},args:function(){var t=this;return t.symbols().map(function(n){return t.terms[n]})},term:function(n){return n=String(n),z.call(this.terms,n)?this.terms[n]:C("1",v.Zero())},c:function(){return this.terms[1].c()},isConst:function(){return 1===this.symbols().length},isReal:function(){var n,t=this.terms;for(n in t)if(z.call(t,n)&&!t[n].isReal())return!1;return!0},isImag:function(){var n,t=this.terms;for(n in t)if(z.call(t,n)&&!t[n].isImag())return!1;return!0},real:function(){return N(this.args().map(function(n){return n.real()}))},imag:function(){return N(this.args().map(function(n){return n.imag()}))},equ:function(n){var t,e,r,i=this,u=J.Arithmetic,l=u.O;if(u.isNumber(n)||Nn(n,f))return 1===i.symbols().length&&i.terms[1].equ(n);if(Nn(n,[S,h,C,x]))return Nn(n,[S,h,x])&&(n=C(n,u.I)),"1"===n.symbol?1===i.symbols().length&&i.terms[1].equ(n):z.call(i.terms,n.symbol)&&2===i.symbols().length&&i.terms[1].equ(l)&&i.terms[n.symbol].equ(n);if(Nn(n,[N,o])){if(Nn(n,o)&&(n=n.toExpr()),e=(r=n.symbols()).length,i.symbols().length!==e)return!1;for(t=0;t<e;t++)if(!z.call(i.terms,r[t])||!n.terms[r[t]].equ(i.terms[r[t]]))return!1;return!0}return Nn(n,d)?n.equ(i):!!On(n)&&(n===i.toString()||n===i.toTex())},gt:function(n){var t,e=J.Arithmetic;return Nn(n,o)&&(n=n.toExpr()),Nn(n,d)?n.lt(this):Nn(n,[N,x,C,h,S])?1===(t=this.sub(n)).symbols().length&&t.c().gt(e.O):!(!Nn(n,f)&&!e.isNumber(n)||1!==this.symbols().length)&&this.c().gt(n)},gte:function(n){var t,e=J.Arithmetic;return Nn(n,o)&&(n=n.toExpr()),Nn(n,d)?n.lte(this):Nn(n,[N,x,C,h,S])?1===(t=this.sub(n)).symbols().length&&t.c().gte(e.O):!(!Nn(n,f)&&!e.isNumber(n)||1!==this.symbols().length)&&this.c().gte(n)},lt:function(n){var t,e=J.Arithmetic;return Nn(n,o)&&(n=n.toExpr()),Nn(n,d)?n.gt(this):Nn(n,[N,x,C,h,S])?1===(t=this.sub(n)).symbols().length&&t.c().lt(e.O):!(!Nn(n,f)&&!e.isNumber(n)||1!==this.symbols().length)&&this.c().lt(n)},lte:function(n){var t,e=J.Arithmetic;return Nn(n,o)&&(n=n.toExpr()),Nn(n,d)?n.gte(this):Nn(n,[N,x,C,h,S])?1===(t=this.sub(n)).symbols().length&&t.c().lte(e.O):!(!Nn(n,f)&&!e.isNumber(n)||1!==this.symbols().length)&&this.c().lte(n)},neg:function(){var n=this;return null==n._n&&(n._n=N(n.args().map(function(n){return n.neg()})),n._n._n=n),n._n},conj:function(){return N(this.args().map(function(n){return n.conj()}))},inv:function(){return d(1,this)},add:function(n){var t=J.Arithmetic;return Nn(n,d)?n.add(this):t.isNumber(n)||Nn(n,[f,S,h,C,x,N,o])?N([this,n]):this},sub:function(n){var t=J.Arithmetic;return t.isNumber(n)?this.add(t.neg(n)):Nn(n,[f,S,h,C,x,N,o])?(Nn(n,[S,h,x])&&(n=C(n,t.I)),this.add(n.neg())):Nn(n,d)?n.neg().add(this):this},mul:function(e){var r,i,u=this,n=J.Arithmetic,t=n.O;return n.isNumber(e)||Nn(e,[f,S,h,C,x])?(Nn(e,[S,h,x])&&(e=C(e,n.I)),u.equ(t)||Nn(e,[f,C])&&e.equ(t)||n.isNumber(e)&&n.equ(t,e)?N():(r=u.symbols(),N(Dn(r.length,function(n){return u.terms[r[n]].mul(e)})))):Nn(e,[N,o])?(Nn(e,o)&&(e=e.toExpr()),u.equ(t)||e.equ(t)?N():(r=u.symbols(),i=e.symbols(),N(Dn(r.length*i.length,function(n){var t=~~(n/i.length),n=n%i.length;return u.terms[r[t]].mul(e.terms[i[n]])})))):Nn(e,d)?e.mul(u):u},div:function(t){var e,r=this,n=J.Arithmetic;n.O;return n.isNumber(t)||Nn(t,[f,S,h,C])?(Nn(t,[S,h])&&(t=C(t,n.I)),e=r.symbols(),N(Dn(e.length,function(n){return r.terms[e[n]].div(t)}))):Nn(t,d)?t.inv().mul(r):d(r,t)},mod:yn,divmod:yn,pow:function(n){var t,e,r=J.Arithmetic,i=r.O,u=r.I;if((n=Z.cast(n)).lt(i)||n.gt(un))return null;if(this.equ(i))return N();if(n.equ(i))return N([C(1,u)]);if(n.equ(u))return this;for(n=r.val(n.num),e=this,t=N([C(1,u)]);0!==n;)1&n&&(t=t.mul(e)),n>>=1,e=e.mul(e);return t},rad:function(n){var t=this,e=J.Arithmetic,r=e.O,e=e.I;return n=Z.cast(n),t.equ(r)?N():n.equ(r)?null:n.equ(e)?t:N(1===t.symbols().length?t.terms[1].rad(n):C(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:N(r.symbols().map(function(n){return"1"===n?J.Arithmetic.O:r.terms[n].d(t,e)}))},evaluate:function(e){var r=this;J.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=J.Arithmetic.O,s="",o=!1;if(null==u._str){for(e=(n=u.symbols()).length,t=0;t<e;t++)(r=u.terms[n[t]]).equ(l)||(i=r.c(),s+=(!o||i.isReal()&&!i.real().gt(l)?"":"+")+r.toString(),o=!0);u._str=s.length?s:"0"}return u._str},toTex:function(){var n,t,e,r,i,u=this,l=J.Arithmetic.O,s="",o=!1;if(null==u._tex){for(e=(n=u.symbols()).length,t=0;t<e;t++)(r=u.terms[n[t]]).equ(l)||(i=r.c(),s+=(!o||i.isReal()&&!i.real().gt(l)?"":"+")+r.toTex(),o=!0);u._tex=s.length?s:"0"}return u._tex}}),N.cast=ke([N],function(n){return On(n)?N.fromString(n):new N(n)}),(d=J.RationalExpr=n(a,{constructor:function n(t,e){var r=J.Arithmetic;if(!Nn(this,n))return new n(t,e);if(Nn(t,n)?(e=t.den,t=t.num):Nn(t,R)&&(e=t.den.toExpr(),t=t.num.toExpr()),null==t?t=N():Nn(t,N)||(t=N(t)),null==e?e=N(r.I):Nn(e,N)||(e=N(e)),e.equ(r.O))throw new Error("Zero denominator in Abacus.RationalExpr!");t.equ(r.O)&&!e.equ(r.I)&&(e=N(r.I)),this.num=t,this.den=e},__static__:{Term:N,fromString:function(n){var t,e,r,i,u,l,s=0,o=0,m=["",""],c="",f=0,a=/\s/;if(!(n=H(String(n))).length)return d();if("-"===n.charAt(0)||"+"===n.charAt(0)){if(c=n.charAt(0),!(n=H(n.slice(1))).length)return d();c="-"===c?"-":""}for(t="\\frac"===n.slice(0,5),e=n.length,f=t?5:0,i=0,r=n.charAt(f),t&&"{"===r&&(o++,f++);f<e;)r=n.charAt(f++),a.test(r)||("/"===r?t||s||o||!(m[i].length&&")"===m[i].charAt(m[i].length-1)||f<e&&"("===n.charAt(f))?m[i]+=r:i=1:"("===r?(s++,m[i]+=r):")"===r?(s--,m[i]+=r,t||s||o||!(e<=f||"/"===n.charAt(f))||(f<e&&"/"===n.charAt(f)&&f++,i=1)):"{"===r?(o++,m[i]+=r):"}"===r?(o--,s||o?m[i]+=r:(t&&f<e&&"{"===n.charAt(f)&&(o++,f++),i=1)):m[i]+=r);return l=s||o?(u=N.fromString(m[0]),null):(m[0].length&&m[1].length&&"("===m[0].charAt(0)&&")"===m[0].charAt(m[0].length-1)&&(m[0]=H(m[0].slice(1,-1))),m[1].length&&"("===m[1].charAt(0)&&")"===m[1].charAt(m[1].length-1)&&(m[1]=H(m[1].slice(1,-1))),u=N.fromString(m[0]),m[1].length?N.fromString(m[1]):null),"-"===c&&(u=u.neg()),new d(u,l)},cast:null},num:null,den:null,_str:null,_tex:null,dispose:function(){var n=this;return n.num=null,n.den=null,n._str=null,n._tex=null,n},c:function(){return this.num.c().div(this.den.c())},term:function(n){return this.num.term(n)},isConst:function(){return this.num.isConst()&&this.den.isConst()},isReal:function(){return this.num.isReal()&&this.den.isReal()||this.num.isImag()&&this.den.isImag()},isImag:function(){return this.num.isReal()&&this.den.isImag()||this.num.isImag()&&this.den.isReal()},real:function(){return d(this.num.real(),this.den.real())},imag:function(){return d(this.num.imag(),this.den.imag())},neg:function(){return d(this.num.neg(),this.den)},inv:function(){return d(this.den,this.num)},conj:function(){return d(this.num.conj(),this.den.conj())},equ:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o,h,C,N,x])||e.isNumber(n)?t.num.equ(t.den.mul(n)):Nn(n,[p,R,d])?t.num.mul(n.den).equ(t.den.mul(n.num)):!!On(n)&&(n===t.toString()||n===t.toTex())},gt:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o,h,C,N,x])||t.isNumber(n)?this.num.gt(this.den.mul(n)):!!Nn(n,[p,R,d])&&this.num.mul(n.den).gt(this.den.mul(n.num))},gte:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o,h,C,N,x])||t.isNumber(n)?this.num.gte(this.den.mul(n)):!!Nn(n,[p,R,d])&&this.num.mul(n.den).gte(this.den.mul(n.num))},lt:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o,h,C,N,x])||t.isNumber(n)?this.num.lt(this.den.mul(n)):!!Nn(n,[p,R,d])&&this.num.mul(n.den).lt(this.den.mul(n.num))},lte:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o,h,C,N,x])||t.isNumber(n)?this.num.lte(this.den.mul(n)):!!Nn(n,[p,R,d])&&this.num.mul(n.den).lte(this.den.mul(n.num))},add:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||e.isNumber(n))&&(n=p(n)),Nn(n,[v,o,h,C,N,x])?d(t.num.add(t.den.mul(n)),t.den):Nn(n,[p,R,d])?d(t.num.mul(n.den).add(t.den.mul(n.num)),t.den.mul(n.den)):t},sub:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||e.isNumber(n))&&(n=p(n)),Nn(n,[v,o,h,C,N,x])?d(t.num.sub(t.den.mul(n)),t.den):Nn(n,[p,R,d])?d(t.num.mul(n.den).sub(t.den.mul(n.num)),t.den.mul(n.den)):t},mul:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||e.isNumber(n))&&(n=p(n)),Nn(n,[v,o,h,C,N,x])?d(t.num.mul(n),t.den):Nn(n,[p,R,d])?d(t.num.mul(n.num),t.den.mul(n.den)):t},div:function(n){var t=this,e=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||e.isNumber(n))&&(n=p(n)),Nn(n,[v,o,h,C,N,x])?d(t.num,t.den.mul(n)):Nn(n,[p,R,d])?d(t.num.mul(n.den),t.den.mul(n.num)):t},mod:yn,divmod:yn,divides:function(n){return!this.equ(J.Arithmetic.O)},pow:function(n){var t,e=J.Arithmetic,r=this.num,i=this.den;return(n=Z.cast(n)).gt(un)?null:((n=e.val(n.num))<0&&(n=-n,t=r,r=i,i=t),0===n?d(e.I):1===n?d(r,i):d(r.pow(n),i.pow(n)))},rad:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).equ(t.I)?this:d(this.num.rad(n),this.den.rad(n))},d:function(n,t){var e,r,i,u,l=J.Arithmetic;if(null==t&&(t=1),(t=l.val(t))<0)return null;if(0===t)return this;for(e=this.num,r=this.den;0<t&&!e.equ(l.O);)e=i=e.d(n,1).mul(r).sub(e.mul(r.d(n,1))),r=u=r.pow(2),t--;return d(i,u)},evaluate:function(n){return n=n||{},this.num.evaluate(n).div(this.den.evaluate(n))},toString:function(){var n=this,t=J.Arithmetic;return null==n._str&&(n._str=n.den.equ(t.I)?n.num.toString():(1===n.num.symbols().length&&n.num.c().isReal()?n.num.toString(!0):"("+n.num.toString()+")")+"/"+(1===n.den.symbols().length&&n.den.isReal()?n.den.toString():"("+n.den.toString()+")")),n._str},toTex:function(){var n=this,t=J.Arithmetic;return null==n._tex&&(n._tex=n.den.equ(t.I)?n.num.toTex():"\\frac{"+n.num.toTex()+"}{"+n.den.toTex()+"}"),n._tex}})).cast=ke([d],function(n){return On(n)?d.fromString(n):new d(n)}),t=J.Op=n({constructor:function n(t){if(!Nn(this,n))return new n(t);Nn(t,n)&&(t=t.op),this.op=String(t)},op:"",dispose:function(){return this.op=null,this},clone:function(){return new this[X](this.op)},evaluate:function(){return null},toString:function(){return self.op},toTex:function(){return this.toString()}}),y=J.RelOp=n(t,{constructor:function n(t,e,r){var i=this;if(!Nn(i,n))return new n(t,e,r);Nn(t,n)?(i.lhs=t.lhs,i.op=t.op,i.rhs=t.rhs):(e=String(e||"=").toLowerCase(),null==t&&(t=d()),null==r&&(r=d()),Nn(t,[N,d,x])||(t=d(t)),Nn(r,[N,d,x])||(r=d(r)),i.lhs=t,i.rhs=r,i.op=n.OP(e))},__static__:{OP:function(n){return n="<"===(n=String(n).toLowerCase())||"\\lt"===n?"<":">"===n||"\\gt"===n?">":">="===n||"=>"===n||"\\le"===n?">=":"<="===n||"=<"===n||"\\ge"===n?"<=":"<>"===n||"!="===n||"\\ne"===n?"<>":"~"===n||"\\sim"===n?"~":"="},DUAL:function(n){return"<"===(n=y.OP(n))?">":">"===n?"<":">="===n?"<=":"<="===n?">=":n},EQU:function(n,t){return new y(n,"=",t)},NEQ:function(n,t){return new y(n,"<>",t)},LT:function(n,t){return new y(n,"<",t)},LTE:function(n,t){return new y(n,"<=",t)},GT:function(n,t){return new y(n,">",t)},GTE:function(n,t){return new y(n,">=",t)},SIM:function(n,t){return new y(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<e&&e<n[1]&&(n=[t,e]),n},["=",1/0])[0];return new y(d.fromString(n[0]),t,1<n.length?d.fromString(n[1]):d())}},lhs:null,rhs:null,dispose:function(){return this.lhs=null,this.rhs=null,this.op=null,this},clone:function(){return new this[X](this.lhs,this.op,this.rhs)},equ:function(n){if(Nn(n,y)){if(this.op===n.op&&this.lhs.equ(n.lhs)&&this.rhs.equ(n.rhs))return!0;if(this.op===y.DUAL(n.op)&&this.lhs.equ(n.rhs)&&this.rhs.equ(n.lhs))return!0}return!1},neg:function(){return new y(this.lhs.neg(),y.DUAL(this.op),this.rhs.neg())},add:function(n){var t=this.op;return new y(this.lhs.add(n),t,this.rhs.add(n))},sub:function(n){var t=this.op;return new y(this.lhs.sub(n),t,this.rhs.sub(n))},mul:function(n){var t=this.op,e=J.Arithmetic;return(e.isNumber(n)&&e.lt(n,0)||Nn(n,f)&&n.lt(0))&&(t=y.DUAL(t)),new y(this.lhs.mul(n),t,this.rhs.mul(n))},div:function(n){var t=this.op,e=J.Arithmetic;return(e.isNumber(n)&&e.lt(n,0)||Nn(n,f)&&n.lt(0))&&(t=y.DUAL(t)),new y(this.lhs.div(n),t,this.rhs.div(n))},evaluate:function(n){n=n||{};var t=this.op,e=this.lhs.evaluate(n),n=this.rhs.evaluate(n);return">"===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()}}),x=J.Func=n(t,{constructor:function t(n,e,r,i){if(!Nn(this,t))return new t(n,e,r,i);Nn(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 Nn(n,[N,d,t])||(n=d(n)),n}),this._eval=r||null,this._deriv=i||null)},__static__:{MIN:function(n){return x("min",n,Pe)},MAX:function(n){return x("max",n,Te)}},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[X](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 x(this.op,this.args.map(function(n){return n.real()}),this._eval,this._deriv)},imag:function(){return x(this.op,this.args.map(function(n){return n.imag()}),this._eval,this._deriv)},equ:function(e){return Nn(e,x)?this.op===e.op&&this.args.filter(function(n,t){return t<terms.args.length&&n.equ(e.args[t])}).length===e.args.length:e.equ(this)},gt:function(n){return!1},gte:function(n){return!1},lt:function(n){return!1},lte:function(n){return!1},neg:function(){return N([C(this,-1)])},add:function(n){return N([this,n])},sub:function(n){return N([this,n.neg()])},mul:function(n){return N([C([this,n])])},div:function(n){return d(this,n)},pow:function(n){return N([h(this,n)])},rad:function(n){return N([h(this,p(n).inv())])},d:function(n,t){var e=this._deriv;return null==t&&(t=1),t=+t,n=String(n||"x"),t<0&&Sn(e)?(e=e.apply(this,this.args),1<t&&(e=e.d(n,t-1)),e):this},evaluate:function(t){t=t||{};var n=this.args,e=this._eval;return Sn(e)?e.apply(this,n.map(function(n){return n.evaluate(t)})):v.Zero()},toString:function(){var n=this.args,t=this.op;return"min"!==t&&"max"!==t||1!==n.length?t+"("+n.map(String).join(",")+")":String(n[0])},toTex:function(){var n=this.args,t=this.op;return"min"!==t&&"max"!==t||1!==n.length?"\\"+t+"("+n.map(Mn).join(",")+")":Mn(n[0])}}),q=n({constructor:function n(t,e,r){if(!Nn(this,n))return new n(t,e,r);Nn(t,n)&&(r=r||t.ring,e=t.e,t=t.c),this.ring=Nn(r,M)?r:M.Q(),this.c=Nn(t,[R,d])?t:this.ring.cast(t||0),this.e=+(e||0)},__static__:{isNonZero:function(n){return Nn(n,q)&&!n.c.equ(J.Arithmetic.O)},cmp:function(n,t,e){var r=n.e-t.e;return!0===e&&0==r?n.c.equ(t.c)?0:n.c.lt(t.c)?-1:1:r},sortDecr:function(n,t){return q.cmp(t,n)},gcd:function(n,t,e){return q(!0!==e||Nn(n.c,[R,d])||Nn(t.c,[R,d])||!n.ring.hasGCD()?n.ring.One():n.ring.gcd(n.c,t.c),Q.min(n.e,t.e))},lcm:function(n,t,e){return q(!0!==e||Nn(n.c,[R,d])||Nn(t.c,[R,d])||!n.ring.hasGCD()?n.c.mul(t.c):n.ring.lcm(n.c,t.c),Q.max(n.e,t.e))}},ring:null,c:null,e:null,dispose:function(){return this.ring=null,this.c=null,this.e=null,this},clone:function(){return new q(this)},cast:function(n){return n===this.ring?this:new q(this.c,this.e,n)},equ:function(n){return Nn(n,q)?this.c.equ(n.c)&&this.e===n.e:this.c.equ(n)},neg:function(){return q(this.c.neg(),this.e,this.ring)},add:function(n){return Nn(n,q)?q(this.c.add(n.c),this.e,this.ring):q(this.c.add(n),this.e,this.ring)},sub:function(n){return Nn(n,q)?q(this.c.sub(n.c),this.e,this.ring):q(this.c.sub(n),this.e,this.ring)},mul:function(n){return Nn(n,q)?q(this.c.mul(n.c),this.e+n.e,this.ring):q(this.c.mul(n),this.e,this.ring)},div:function(n){return Nn(n,q)?q(this.c.div(n.c),Q.max(0,this.e-n.e),this.ring):q(this.c.div(n),this.e,this.ring)},divides:function(n){return this.e<=n.e&&this.c.divides(n.c)},pow:function(n){return 1===(n=+n)?this:q(this.c.pow(n),Q.floor(this.e*n),this.ring)},rad:function(n){return 1===(n=+n)?this:q(this.c.rad(n),Q.max(Q.floor(this.e/n),Q.min(1,this.e)),this.ring)},toTerm:function(n,t,e,r,i){var u,l=this.e,s=this.c,o=J.Arithmetic;if(!0===r){if(u=0<l?n+(1<l?"^"+String(l):""):"",!0===e)return u;u=u.length?(s.equ(o.I)?"":s.equ(o.J)?"-":(!Nn(s,[R,d])||s.isConst(!0))&&s.isReal()?s.toDec(i):"("+s.toDec(i)+")")+u:Nn(s,[R,d])&&!s.isConst(!0)?"("+s.toDec(i)+")":s.toDec(i)}else if(!0===t){if(u=0<l?Zn(n)+(1<l?"^{"+Mn(l)+"}":""):"",!0===e)return u;u=u.length?(s.equ(o.I)?"":s.equ(o.J)?"-":(!Nn(s,[R,d])||s.isConst(!0))&&s.isReal()?s.toTex():"("+s.toTex()+")")+u:Nn(s,[R,d])&&!s.isConst(!0)?"("+s.toTex()+")":s.toTex()}else{if(u=0<l?n+(1<l?"^"+String(l):""):"",!0===e)return u;u=u.length?(s.equ(o.I)?"":s.equ(o.J)?"-":(!Nn(s,[R,d])||s.isConst(!0)&&s.den.equ(o.I))&&s.isReal()?s.toString(!0)+"*":"("+s.toString()+")*")+u:Nn(s,[R,d])&&!s.isConst(!0)?"("+s.toString()+")":s.toString()}return u},toString:function(){return"("+this.c.toString()+","+String(this.e)+")"}}),t=n(o,{constructor:function n(t,e,r,i){var u=this;if(!Nn(u,n))return new n(t,e,r,i);u.ring=i||M.Q(),u.symbol=r||"x",u.segments=t.map(function(n){var r,i;return Nn(n,I)?n={poly:n,cond:function(n,t,e){return n.lte(u.ring.create(t+1).div(e))},trans:function(n,t,e){return n.sub(u.ring.create(t).div(e)).mul(e)}}:In(n)&&(Nn(n.poly,I)||(n.poly=I([u.ring.cast(n.poly||0)],u.symbol,u.ring)),Nn(n.cond,f)?n.cond=(i=u.ring.cast(n.cond||0),function(n,t,e){return n.lte(i)}):Sn(n.cond)||(n.cond=function(n,t,e){return n.lte(u.ring.create(t+1).div(e))}),Nn(n.trans,f)?n.cond=(r=u.ring.cast(n.trans||0),function(n,t,e){return n.sub(r)}):Sn(n.trans)||(n.trans=function(n,t,e){return n.sub(u.ring.create(t).div(e)).mul(e)})),n}),u.defaultValue=u.ring.cast(e||0)},segments:null,defaultValue:null,symbol:null,ring:null,dispose:function(){return this.segments=null,this.defaultValue=null,this.symbol=null,this.ring=null,this},evaluate:function(n){var t,e,r=this.segments.length;for(n=this.ring.cast(n),t=0;t<r;t++)if((e=this.segments[t]).cond(n,t,r))return e.poly.evaluate(e.trans(n,t,r));return this.defaultvalue},toString:function(){return"{\n"+this.segments.map(function(n){return n.poly.toString()}).join("\n")+"\n}"},toTex:function(){return"\\begin{cases} "+this.segments.map(function(n,t){return n.poly.toTex()}).join("\\\\")+" \\end{cases}"}}),(I=J.Polynomial=n(o,{constructor:function n(t,e,r){var i,u=this,l=J.Arithmetic,s=l.O;if(!Nn(u,n))return new n(t,e,r);Nn(t,[S,h,C])&&(t=N(t)),Nn(t,N)&&(t=n.fromExpr(t,e||"x",r||M.C())),Nn(t,w)?(u.ring=r||t.ring,u.symbol=String(e||"x"),-1===(i=t.symbol.indexOf(u.symbol))&&(i=0),u.terms=t.terms.map(function(n){return q(n.c,n.e[i],u.ring)}).sort(q.sortDecr).reduce(function(n,t){return n.length&&n[n.length-1].e===t.e?n[n.length-1]=n[n.length-1].add(t):n.push(t),n},[]).filter(q.isNonZero)):Nn(t,n)?(u.ring=r||t.ring,u.symbol=String(e||t.symbol),u.terms=u.ring!==t.ring?t.terms.map(function(n){return q(n.c,n.e,u.ring)}):t.terms.slice()):(u.ring=Nn(r,M)?r:M.Q(),u.symbol=String(e||"x"),(Nn(t,f)||l.isNumber(t)||On(t))&&(t=q(t,0,u.ring)),Nn(t,q)?u.terms=t.c.equ(s)?[]:[t]:qn(t)||An(t)?t.length&&!Nn(t[0],q)?u.terms=Dn(t.length,function(n){return q(t[n],n,u.ring)}).filter(q.isNonZero).reverse():u.terms=An(t)?G.call(t):t:In(t)?u.terms=rn(t).map(function(n){return q(t[n],n,u.ring)}).sort(q.sortDecr):u.terms=[])},__static__:{Term:q,Piecewise:t,Zero:function(n,t){return new I([],n||"x",t||M.Q())},One:function(n,t){return t=t||M.Q(),new I(t.One(),n||"x",t)},MinusOne:function(n,t){return t=t||M.Q(),new I(t.MinusOne(),n||"x",t)},hasInverse:function(){return!1},cast:null,Add:function(n,t,e){var r,i=J.Arithmetic;if(Nn(n,I)){if(n.symbol!==t.symbol)return r=t.symbol>n.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=he(t.terms,n.terms,q,!0===e,t.ring))}else(Nn(n,f)||i.isNumber(n))&&((n=q(n,0,t.ring)).equ(i.O)||(n=t.terms.length?he([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=J.Arithmetic,u=i.O;if(!t.terms.length)return t;if(Nn(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?de(t.terms,n.terms,q,t.ring):[]}else if(Nn(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=J.Arithmetic,l=u.O,s=u.I;if(n=!0===n,Nn(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(Dn(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=ge(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(Nn(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(Dn(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||J.Arithmetic.O,t||"x",e||M.Q())},gcd:Tt,xgcd:Pt,lcm:$t,bezier:function(n,t){t=String(t||"x");var e,r,i,u,l,s=M.Q(),o=I.Zero(t,s);if(qn(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(Kt(e-1,r)).mul(s.cast(n[r])));return o},bezierThrough:function(n,t){t=String(t||"x");var e,r,i,c=M.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;t<r-1;t++)l[t]=c.One(),s[t]=c.create(4),o[t]=c.One(),m[t]=n[t].mul(4).add(n[t+1].mul(2));for(l[r-1]=c.create(2),s[r-1]=c.create(7),o[r-1]=c.Zero(),m[r-1]=n[r-1].mul(8).add(n[r]),t=1;t<r;t++)e=l[t].div(s[t-1]),s[t]=s[t].sub(e.mul(o[t-1])),m[t]=m[t].sub(e.mul(m[t-1]));for(i[r-1]=m[r-1].div(s[r-1]),t=r-2;0<=t;--t)i[t]=m[t].sub(o[t].mul(i[t+1])).div(s[t]);for(t=0;t<r-1;t++)u[t]=n[t+1].mul(2).sub(i[t+1]);return u[r-1]=n[r].add(i[r-1]).div(2),[i,u]};if(qn(n)&&n.length){if(1===(n=c.cast(n)).length)i=[I(n[0],t,c)];else if(2===n.length)i=[I.bezier([n[0],n[1]],t)];else for(i=[],r=u(n),e=0;e<n.length-1;e++)i.push(I.bezier([n[e],r[0][e],r[1][e],n[e+1]],t));return I.Piecewise(i,0,t,c)}return I.Piecewise([I.Zero(t,c)],0,t,c)},fromValues:function(r,t,i){var u,l,s,n,e,o,m=(i=i||M.Q()).One();if(t=String(t||"x"),!r||!r.length)return I([],t,i);for(An(r)&&(r=G.call(r)),qn(r[0])||(r=[r]),r=r.map(function(n){return[i.cast(n[0]),i.cast(n[1])]}),e=c(),o=[],u=0;u<r.length;u++)if(n=r[u][0].toString(),z.call(e,n)){if(!r[e[n]][1].equ(r[u][1]))return null;o.push(u)}else e[n]=u;for(;o.length;)r.splice(o.pop(),1);return o=e=null,u=r.length,l=Dn(u,function(n){for(var t=m,e=0;e<u;e++)e!==n&&(t=t.mul(r[n][0].sub(r[e][0])));return t=r[n][1].div(t)}),s=Dn(u,function(n){return I([r[n][0].neg(),m],t,i)}),En(function(n,e){return I.Add(En(function(n,t){return e!==t&&(n=I.Mul(s[t],n)),n},I(l[e],t,i),null,0,u-1),n)},I.Zero(t,i),null,0,u-1)},fromExpr:function(n,t,e){if(!Nn(n,N))return null;e=e||M.Q(),t=String(t||"x");for(var r,i,u=n.symbols(),l=J.Arithmetic.O,s={},o=u.length-1;0<=o;o--)r=u[o],(i=n.terms[r].c()).equ(l)||("1"===r?s[0]=i:t===r?s[1]=i:r.length>t.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=J.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||M.Q(),!(n=H(String(n))).length)return I.Zero(t||"x",e);for(;u=c.exec(n);){if(!u[0].length){if(c.lastIndex<n.length){c.lastIndex++;continue}break}if(H(u[0]).length){if(u[2]){if(-1!==(l=(i=u[2]).indexOf("_"))&&"{"===i.charAt(l+1)&&"}"===i.charAt(i.length-1)&&(i=i.slice(0,l+1)+i.slice(l+2,-1)),t&&i!==t)continue;if(!t)if(null==m)m=i;else if(i!==m)continue;r=u[3]||"1",""===(i=H(u[1]||""))||"+"===i?i="1":"-"===i&&(i="-1")}else r="0","+"===(i=H(u[1]||""))?i="1":"-"===i?i="-1":""===i&&(i="0");for(l=0;l<r.length&&"0"===r.charAt(l);)l++;0<l&&(r=l<r.length?r.slice(l):"0"),u=v.fromString(i),o[r]=o[r]?o[r].add(u):u}}return En(function(n,t){o[t]=e.cast(o[t]),o[t].equ(s.O)&&delete o[t]},null,rn(o)),new I(o,t||m,e)}},terms:null,symbol:null,ring:null,_str:null,_tex:null,_n:null,_expr:null,_prim:null,_roots:null,_factors:null,dispose:function(){var n=this;return n._n&&n._n._n===n&&(n._n._n=null),n._c&&n._c._c===n&&(n._c._c=null),n.terms=null,n.symbol=null,n.ring=null,n._str=null,n._tex=null,n._n=null,n._c=null,n._expr=null,n._prim=null,n._roots=null,n._factors=null,n},isInt:function(){var n,t=this.terms;if(Cn(this.ring.NumberClass,Z))return!0;for(n=t.length-1;0<=n;n--)if(!t[n].c.isInt())return!1;return!0},isReal:function(){var n,t=this.terms;if(!Cn(this.ring.NumberClass,v))return!0;for(n=t.length-1;0<=n;n--)if(!t[n].c.isReal())return!1;return!0},isImag:function(){var n,t=this.terms;if(!Cn(this.ring.NumberClass,v))return!1;for(n=t.length-1;0<=n;n--)if(!t[n].c.isImag())return!1;return!0},isMono:function(){var n=this.terms;return 1===n.length&&0!==n[0].e},isConst:function(){return 0===this.deg()},isUni:function(n,t){return n=String(n||"x"),this.symbol===n&&(!0!==t||0!==this.deg())},deg:function(){var n=this.terms;return n.length?n[0].e:0},maxdeg:function(){return this.deg()},mindeg:function(){var n=this.terms;return n.length?n[n.length-1].e:0},term:function(e,n){var t=this.terms,r=this.ring,i=this.symbol;return I(!0===n?t.reduce(function(n,t){return e===t.e?[t]:n},[]):0<=e&&e<t.length?[t[e]]:[],i,r)},ltm:function(n){var t=this.terms,e=this.ring,r=this.symbol;return!0===n?I(t.length?[t[0]]:[],r,e):t.length?t[0]:q(0,0,e)},ttm:function(n){var t=this.terms,e=this.ring,r=this.symbol;return!0===n?I(t.length?[t[t.length-1]]:[],r,e):t.length?t[t.length-1]:q(0,0,e)},lm:function(){return this.ltm(!1).e},lc:function(){return this.ltm(!1).c},tm:function(){return this.ttm(!1).e},tc:function(){return this.ttm(!1).c},cc:function(){var n=this.terms;return n.length&&0===n[n.length-1].e?n[n.length-1].c:this.ring.Zero()},c:function(){return this.cc()},monic:function(){var n,t,e,r=this,i=J.Arithmetic,u=r.lc();if(u.equ(i.I)||u.equ(i.O))return r;if(r.ring.isField())return I(r.terms.map(function(n){return n.div(u)}),r.symbol,r.ring);for(e=!0,n=(t=r.terms).length-1;0<n;n--)if(!u.divides(t[n].c)){e=!1;break}return e?I(r.terms.map(function(n){return n.div(u)}),r.symbol,r.ring):u.lt(i.O)?r.neg():r},primitive:function(n){var t,e,r,i,u,l=this,s=l.symbol,o=l.ring,m=o.associatedField(),c=l.terms,f=J.Arithmetic;return null==l._prim&&(c.length?Cn(o.NumberClass,v)?(i=l.isReal(),u=l.isImag(),i||u?u?(e=c.reduce(function(n,t){return f.mul(n,t.c.imag().den)},f.I),t=c.map(function(n){return n.c.mul(e).imag().num}),r=Nt(t),t=t.map(function(n){return f.div(n,r)}),f.gt(f.O,t[0])&&(t=t.map(function(n){return f.neg(n)}),r=f.neg(r)),l._prim=[I(t.map(function(n,t){return q(n,c[t].e,o)}),s,o),m.create(v.Img().mul(p(r,e).simpl()))]):(e=c.reduce(function(n,t){return f.mul(n,t.c.real().den)},f.I),t=c.map(function(n){return n.c.mul(e).real().num}),r=Nt(t),t=t.map(function(n){return f.div(n,r)}),f.gt(f.O,t[0])&&(t=t.map(function(n){return f.neg(n)}),r=f.neg(r)),l._prim=[I(t.map(function(n,t){return q(n,c[t].e,o)}),s,o),m.create(p(r,e).simpl())]):(r=o.gcd(c.map(function(n){return n.c})).simpl(),l._prim=[I(c.map(function(n){return q(n.c.div(r),n.e,o)}),s,o),r])):(e=Cn(o.NumberClass,Z)?f.I:c.reduce(function(n,t){return f.mul(n,t.c.den)},f.I),t=c.map(function(n){return n.c.mul(e).num}),r=Nt(t),t=t.map(function(n){return f.div(n,r)}),f.gt(f.O,t[0])&&(t=t.map(function(n){return f.neg(n)}),r=f.neg(r)),l._prim=[I(t.map(function(n,t){return q(n,c[t].e,o)}),s,o),m.create(p(r,e).simpl())]):l._prim=[l,m.One()]),!0===n?l._prim.slice():l._prim[0]},content:function(){return this.primitive(!0)[1]},roots:function(){var n,t,e,r,i,u,l,s,o,m,c,f,a,h=this.ring,d=J.Arithmetic,g=d.O;if(null==this._roots){if(n=[],!this.isConst()&&(this.isImag()||this.isReal())&&(0<(e=(t=this.primitive()).terms)[e.length-1].e&&n.push([p.Zero(),e[e.length-1].e]),1<e.length)){for(i=(l=Lt((Cn(h.NumberClass,v)?e[e.length-1].c.real():e[e.length-1].c).num,!0)).get(),l.dispose(),u=(l=Lt((Cn(h.NumberClass,v)?e[0].c.real():e[0].c).num,!0)).get(),l.dispose(),l=L([i.length,u.length]);l.hasNext();){for(s=l.next(),o=p(i[s[0]],u[s[1]]).simpl(),m=p(d.neg(i[s[0]]),u[s[1]]).simpl(),r=t,a=!(f=c=0);a&&0<r.deg();)a=!1,r.evaluate(o).equ(g)&&(c++,a=!0),r.evaluate(m).equ(g)&&(f++,a=!0),a&&(r=r.d());0<c&&n.push([o,c]),0<f&&n.push([m,f])}l.dispose()}this._roots=n}return this._roots.map(function(n){return n.slice()})},factors:function(){var n,t,e,r,i,u,l,s,o,m=this.ring,c=this.symbol,f=J.Arithmetic;if(null==this._factors){if(s=this.primitive(!0),o=this.roots(),n=s[1],s=s[0],t=[],o.length){for(i=0,u=o.length;i<u;i++)r=o[i],e=I([f.neg(r[0].num),r[0].den],c,m),t.push([e,r[1]]),s=s.div(e.pow(r[1]));Cn(m.NumberClass,v)&&!s.isReal()||(l=Cn(m.NumberClass,Z)?f.I:Zt(s.terms.map(Cn(m.NumberClass,v)?function(n){return n.c.real().den}:function(n){return n.c.den})),f.equ(f.I,l)||(n=n.div(l),s=s.mul(l))),0<s.deg()?t.push([s,1]):n=n.mul(s.cc())}t.length||t.push([s,1]),this._factors=[t,n]}return[this._factors[0].slice(),this._factors[1]]},equ:function(n){this.ring;var t,e,r=J.Arithmetic,i=r.O,u=this.terms;if(r.isNumber(n))return r.equ(i,n)?0===u.length:1===u.length&&u[0].c.equ(n)&&0===u[0].e;if(Nn(n,f))return n.equ(i)?0===u.length:1===u.length&&u[0].c.equ(n)&&0===u[0].e;if(Nn(n,I)){if(t=n.terms,u.length!==t.length)return!1;for(e=u.length-1;0<=e;e--)if(!u[e].equ(t[e]))return!1;return!0}return Nn(n,[w,R])?n.equ(this):Nn(n,[S,h,C])?(Nn(n,[S,h])&&(n=C(n)),!(1<u.length)&&(0===u.length?n.c().equ(i):((i=u[0].toTerm(this.symbol)).length||(i="1"),i===n.symbol&&n.c().equ(u[0].c)))):Nn(n,N)?this.toExpr().equ(n):!!On(n)&&(n===this.toString()||n===this.toTex())},gt:function(n){var t=J.Arithmetic;return Nn(n,f)||t.isNumber(n)?!this.isConst()||this.cc().gt(n):Nn(n,I)?0<q.cmp(this.ltm(),n.ltm(),!0):Nn(n,[R,w])?n.lt(this):!!Nn(n,[N,C,h,S])&&this.toExpr().gt(n)},gte:function(n){var t=J.Arithmetic;return Nn(n,f)||t.isNumber(n)?!this.isConst()||this.cc().gte(n):Nn(n,I)?0<=q.cmp(this.ltm(),n.ltm(),!0):Nn(n,[R,w])?n.lte(this):!!Nn(n,[N,C,h,S])&&this.toExpr().gte(n)},lt:function(n){var t=J.Arithmetic;return Nn(n,f)||t.isNumber(n)?this.isConst()&&this.cc().lt(n):Nn(n,I)?q.cmp(this.ltm(),n.ltm(),!0)<0:Nn(n,[R,w])?n.gt(this):!!Nn(n,[N,C,h,S])&&this.toExpr().lt(n)},lte:function(n){var t=J.Arithmetic;return Nn(n,f)||t.isNumber(n)?this.isConst()&&this.cc().lte(n):Nn(n,I)?q.cmp(this.ltm(),n.ltm(),!0)<=0:Nn(n,[R,w])?n.gte(this):!!Nn(n,[N,C,h,S])&&this.toExpr().lte(n)},real:function(){var t=this.ring;return Cn(t.NumberClass,v)?I(this.terms.map(function(n){return q(n.c.real(),n.e,t)}),this.symbol,t):this},imag:function(){var t=this.ring;return Cn(t.NumberClass,v)?I(this.terms.map(function(n){return q(n.c.imag(),n.e,t)}),this.symbol,t):I([],this.symbol,t)},abs:function(){return this.lc().lt(J.Arithmetic.O)?this.neg():this},conj:function(){var n=this,t=n.ring;return null==n._c&&(Cn(t.NumberClass,v)?(n._c=I(n.terms.map(function(n){return q(n.c.conj(),n.e,t)}),n.symbol,t),n._c._c=n):n._c=n),n._c},neg:function(){var t=this;J.Arithmetic;return null==t._n&&(t._n=I(Dn(t.terms.length,function(n){return t.terms[n].neg()}),t.symbol,t.ring),t._n._n=t),t._n},inv:yn,add:function(n){var t=J.Arithmetic;return Nn(n,[N,C,h,S])?this.toExpr().add(n):Nn(n,[R,w])?n.add(this):t.isNumber(n)||Nn(n,[f,I])?I.Add(n,this.clone()):this},sub:function(n){var t=J.Arithmetic;return Nn(n,[N,C,h,S])?this.toExpr().sub(n):Nn(n,[R,w])?n.neg().add(this):t.isNumber(n)||Nn(n,[f,I])?I.Add(n,this.clone(),!0):this},mul:function(n){var t=J.Arithmetic;return Nn(n,[N,C,h,S])?this.toExpr().mul(n):Nn(n,[R,w])?n.mul(this):t.isNumber(n)||Nn(n,[f,I])?I.Mul(n,this.clone()):this},div:function(n,t){return Nn(n,R)?R(w(this,n.num.symbol,n.num.ring)).div(n):Nn(n,w)?w(this,n.symbol,n.ring).div(n,t):Nn(n,[I,f])||J.Arithmetic.isNumber(n)?I.Div(this,n,!0===t):this},multidiv:function(n,t){var e,r,i,u,l,s,o,m,c;J.Arithmetic;if(t=!0===t,Nn(n,I)&&(n=[n]),!n||!n.length)return t?[[],this]:[];for(r=Dn(u=n.length,function(){return[]}),i=[],e=this.clone();e.terms.length;){for(s=e.ltm(),c=!1,l=0;l<u;l++)if((o=n[l].ltm()).divides(s)){c=!0;break}c?(m=s.div(o),r[l]=he(r[l],[m],q,!1,e.ring),e.terms=he(e.terms,n[l].terms.map(function(n){return n.mul(m)}),q,!0,e.ring)):(e.terms.shift(),t&&(i=he(i,[s],q,!1,e.ring)))}return r=r.map(function(n){return I(n,e.symbol,e.ring)}),t?[r,I(i,e.symbol,e.ring)]:r},mod:function(n){return this.div(n,!0)[1]},multimod:function(n){return this.multidiv(n,!0)[1]},divmod:function(n){return this.div(n,!0)},multidivmod:function(n){return this.multidiv(n,!0)},divides:function(n){var t=J.Arithmetic;return!this.equ(t.O)&&(!!Nn(n,R)||((Nn(n,f)||t.isNumber(n))&&(n=I(n,this.symbol,this.ring)),!!Nn(n,o)&&n.mod(this).equ(t.O)))},pow:function(n){var t,e,r=J.Arithmetic;if((n=Z.cast(n)).lt(r.O)||n.gt(un))return null;if(0===(n=r.val(n.num)))return I.One(this.symbol,this.ring);if(1===n)return this;if(2===n)return I.Mul(this,this.clone());for(t=I.One(this.symbol,this.ring),e=this.clone();0!==n;)1&n&&(t=I.Mul(e,t)),n>>=1,e=I.Mul(e,e);return t},rad:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).equ(t.I)?this:at(this,n)},compose:function(n){var t,e,r,i,u=this,l=J.Arithmetic;l.O;if(Nn(n,C)&&(n=N(n)),Nn(n,N)&&(n=I.fromExpr(n,u.symbol,u.ring)),l.isNumber(n)||Nn(n,f))return I(u.evaluate(n),u.symbol,u.ring);if(Nn(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<r;)r--,t=I.Mul(n,t),i<e.length&&r===e[i].e&&(t=I.Add(e[i++].c,t));return t}return u},shift:function(t){var e=this,n=J.Arithmetic;return 0===(t=n.val(t))?e:I(t<0?e.terms.map(function(n){return n.e<-t?null:q(n.c,n.e+t,e.ring)}).filter(q.isNonZero):e.terms.map(function(n){return q(n.c,n.e+t,e.ring)}),e.symbol,e.ring)},d:function(r){var i=this,u=J.Arithmetic;u.O;return null==r&&(r=1),(r=+r)<0?null:0===r||0===i.terms.length?i:r>=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=Dn(u,function(n){return t+"_"+(n+1)});return this.terms.reduce(function(n,e){if(!e.e)return n;var t=j(u,e.e),r=t.total();return t.get().reduce(function(n,t){return n.add(w(A(i.cast(e.c).div(r),Dn(u,function(n){return-1===t.indexOf(n)?0:1})),l,i))},n)},w(A(this.cc(),Dn(u,0)),l,i))},evaluate:function(n){var t,e,r,i=this.ring,u=J.Arithmetic,l=u.O,s=this.terms;if(!s.length)return i.Zero();for(Nn(n,f)||u.isNumber(n)||!In(n)||(n=n[this.symbol]),n=n||l,t=s[0].e,r=s[0].c,e=1;0<t;)t--,r=r.mul(n),e<s.length&&t===s[e].e&&(r=s[e++].c.add(r));return r},toString:function(){var n,t,e,r,i,u="",l=!1,s=J.Arithmetic;if(null==this._str){for(n=this.terms,e=this.symbol,r=0,i=n.length;r<i;r++)t=n[r],u+=(!l||(!Nn(t.c,[R,d])||t.c.isConst(!0)&&t.c.den.equ(s.I))&&t.c.isReal()&&!t.c.gt(s.O)?"":"+")+t.toTerm(e),l=!0;this._str=u.length?u:"0"}return this._str},toTex:function(){var n,t,e,r,i,u="",l=!1,s=J.Arithmetic;if(null==this._tex){for(n=this.terms,e=this.symbol,r=0,i=n.length;r<i;r++)t=n[r],u+=(!l||(!Nn(t.c,[R,d])||t.c.isConst(!0)&&t.c.den.equ(s.I))&&t.c.isReal()&&!t.c.gt(s.O)?"":"+")+t.toTerm(e,!0),l=!0;this._tex=u.length?u:"0"}return this._tex},toDec:function(n){for(var t,e="",r=!1,i=J.Arithmetic,u=this.terms,l=this.symbol,s=0,o=u.length;s<o;s++)t=u[s],e+=(!r||(!Nn(t.c,[R,d])||t.c.isConst(!0)&&t.c.den.equ(i.I))&&t.c.isReal()&&!t.c.gt(i.O)?"":"+")+t.toTerm(l,!1,!1,!0,n),r=!0;return e.length||(e="0",wn(n)&&0<n&&(e+="."+new Array(n+1).join("0"))),e},toExpr:function(){var n,t,e,r,i,u=J.Arithmetic.O;if(null==this._expr){for(t=this.symbol,r=[],e=(n=this.terms).length-1;0<=e;e--)i=n[e].toTerm(t,!1,!0),r.push(C(i.length?i:"1",n[e].c));r.length||r.push(C(1,u)),this._expr=N(r)}return this._expr}})).cast=function(n,t,e){return e=e||M.Q(),t=String(t||"x"),ke(function(n){return Nn(n,I)&&n.ring===e},function(n){return On(n)?I.fromString(n,t,e):new I(n,t,e)})(n)},A=n({constructor:function n(t,e,r){if(!Nn(this,n))return new n(t,e,r);Nn(t,n)?(r=r||t.ring,e=t.e.slice(),t=t.c):Nn(t,q)&&(r=r||t.ring,e=[t.e],t=t.c),this.ring=Nn(r,M)?r:M.Q(),Nn(t,w)&&t.ring.NumberClass!==this.ring.NumberClass&&!Cn(t.ring.NumberClass,v)&&Cn(t.ring.NumberClass,[Z,p])&&Cn(this.ring.NumberClass,[p,v])&&(t=w(t,t.symbol,this.ring)),this.c=Nn(t,[w,R,d])?t:this.ring.cast(t||0),this.e=qn(e)?e:[+(e||0)]},__static__:{isNonZero:function(n){return Nn(n,A)&&!n.c.equ(J.Arithmetic.O)},cmp:function(n,t,e){function r(n,t,e){return e>=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((qn(n)||An(n))&&(qn(t)||An(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||Nn(t.c,[w,R,d])||Nn(e.c,[w,R,d])||!t.ring.hasGCD()?t.ring.One():t.ring.gcd(t.c,e.c),Dn(Q.max(t.e.length,e.e.length),function(n){return n<t.e.length&&n<e.e.length?Q.min(t.e[n],e.e[n]):0}))},lcm:function(t,e,n){return A(!0!==n||Nn(t.c,[w,R,d])||Nn(e.c,[w,R,d])||!t.ring.hasGCD()?t.c.mul(e.c):t.ring.lcm(t.c,e.c),Dn(Q.max(t.e.length,e.e.length),function(n){return n<t.e.length&&n<e.e.length?Q.max(t.e[n],e.e[n]):(n<t.e.length?t:e).e[n]}))}},ring:null,c:null,e:null,dispose:function(){return this.ring=null,this.c=null,this.e=null,this},clone:function(){return new A(this)},cast:function(n){return n===this.ring?this:new A(this.c,this.e,n)},equ:function(n){return Nn(n,A)?0===A.cmp(this,n,!0):this.c.equ(n)},neg:function(){return A(this.c.neg(),this.e.slice(),this.ring)},add:function(n){return Nn(n,A)?A(this.c.add(n.c),this.e.slice(),this.ring):A(this.c.add(n),this.e.slice(),this.ring)},sub:function(n){return Nn(n,A)?A(this.c.sub(n.c),this.e.slice(),this.ring):A(this.c.sub(n),this.e.slice(),this.ring)},mul:function(t){var e=this;return Nn(t,A)?A(e.c.mul(t.c),Dn(Q.max(e.e.length,t.e.length),function(n){return n<e.e.length&&n<t.e.length?e.e[n]+t.e[n]:(n<t.e.length?t:e).e[n]}),e.ring):A(e.c.mul(t),e.e.slice(),e.ring)},div:function(t){var e=this;return Nn(t,A)?A(e.c.div(t.c),Dn(Q.max(e.e.length,t.e.length),function(n){return n<e.e.length&&n<t.e.length?Q.max(0,e.e[n]-t.e[n]):n<t.e.length?0:e.e[n]}),e.ring):A(e.c.div(t),e.e.slice(),e.ring)},divides:function(n){var t,e=this.e,r=n.e,i=Q.max(e.length,r.length);if(!this.c.divides(n.c))return!1;for(t=0;t<i&&!(t>=e.length);t++)if(t>=r.length){if(0<e[t])return!1}else if(e[t]>r[t])return!1;return!0},pow:function(t){var e=this;return 1===(t=+t)?e:A(e.c.pow(t),Dn(e.e.length,function(n){return Q.floor(e.e[n]*t)}),e.ring)},rad:function(t){var e=this;return 1===(t=+t)?e:A(e.c.rad(t),Dn(e.e.length,function(n){return Q.max(Q.floor(e.e[n]/t),Q.min(1,e.e[n]))}),e.ring)},toTerm:function(n,t,e,r,i){var u,l=this.e,s=this.c,o=J.Arithmetic;if(!0===r){if(u=n.reduce(function(n,t,e){return 0<l[e]?n+(n.length?"*":"")+t+(1<l[e]?"^"+String(l[e]):""):n},""),!0===e)return u;u=u.length?(s.equ(o.I)?"":s.equ(o.J)?"-":(!Nn(s,[w,R,d])||s.isConst(!0))&&s.isReal()?s.toDec(i):"("+s.toDec(i)+")")+u:Nn(s,[w,R,d])&&!s.isConst(!0)?"("+s.toDec(i)+")":s.toDec(i)}else if(!0===t){if(u=n.reduce(function(n,t,e){return 0<l[e]?n+Zn(t)+(1<l[e]?"^{"+Mn(l[e])+"}":""):n},""),!0===e)return u;u=u.length?(s.equ(o.I)?"":s.equ(o.J)?"-":(!Nn(s,[w,R,d])||s.isConst(!0))&&s.isReal()?s.toTex():"("+s.toTex()+")")+u:Nn(s,[w,R,d])&&!s.isConst(!0)?"("+s.toTex()+")":s.toTex()}else{if(u=n.reduce(function(n,t,e){return 0<l[e]?n+(n.length?"*":"")+t+(1<l[e]?"^"+String(l[e]):""):n},""),!0===e)return u;u=u.length?(s.equ(o.I)?"":s.equ(o.J)?"-":(!Nn(s,w)||s.isConst(!0))&&(!Nn(s,[R,d])||s.isConst(!0)&&s.den.equ(o.I))&&s.isReal()?s.toString(!0)+"*":"("+s.toString()+")*")+u:Nn(s,w)&&!s.isConst(!0)||Nn(s,[R,d])&&(!s.isConst(!0)||!s.den.equ(o.I))?"("+s.toString()+")":s.toString()}return u},toString:function(){return"("+this.c.toString()+",["+this.e.join(",")+"])"}}),(w=J.MultiPolynomial=n(o,{constructor:function n(m,t,e){var r,c=this,i=J.Arithmetic;if(!Nn(c,n))return new n(m,t,e);Nn(m,[S,h,C])&&(m=N(m)),Nn(m,N)&&(m=n.fromExpr(m,t||["x"],e||M.C())),Nn(m,n)?(c.ring=e||m.ring,c.symbol=t||m.symbol,c.terms=c.ring!==m.ring||c.symbol.length!==m.symbol.length?m.terms.map(function(n){return A(n.c,c.symbol.length<=m.symbol.length?n.e.slice(0,c.symbol.length):n.e.concat(Dn(c.symbol.length-m.symbol.length,0)),c.ring)}):m.terms.slice(),c._rsym=m._rsym?m._rsym.slice():null):Nn(m,I)?(c.ring=e||m.ring,c.symbol=qn(t)&&t.length?t:[m.symbol],-1===(r=c.symbol.indexOf(m.symbol))&&(r=0),c.terms=m.terms.map(function(t){return A(t.c,Dn(c.symbol.length,function(n){return n===r?t.e:0}),c.ring)})):(c.ring=Nn(e,M)?e:M.Q(),qn(t=t||"x")?t.length||(t=["x"]):t=[String(t)],c.symbol=t,(Nn(m,f)||i.isNumber(m)||On(m))&&(m=A(m,Dn(c.symbol.length,0),c.ring)),Nn(m,A)?c.terms=m.equ(i.O)?[]:[m]:qn(m)||An(m)?(An(m)&&(m=G.call(m)),m.length&&!Nn(m[0],A)?c.terms=m.map(function(n,t){return A(n,Dn(c.symbol.length,function(n){return 0===n?t:0}),c.ring)}).filter(A.isNonZero).reverse():c.terms=m):In(m)?c.terms=rn(m).map(function(n){for(var t,e,r,i=Dn(c.symbol.length,0),u=m[n],l=n.split("*"),s=0,o=l.length;s<o;s++)(r=H(l[s])).length&&"1"!==r&&(r=-1!==(t=r.indexOf("^"))?(e=r.slice(0,t),parseInt(r.slice(t+1),10)):(e=r,1),i[-1===(t=c.symbol.indexOf(e))?0:t]=r);return A(u,i,c.ring)}).sort(A.sortDecr):c.terms=[])},__static__:{Term:A,Zero:function(n,t){return new w([],n||["x"],t||M.Q())},One:function(n,t){return t=t||M.Q(),new w(t.One(),n||["x"],t)},MinusOne:function(n,t){return t=t||M.Q(),new w(t.MinusOne(),n||["x"],t)},hasInverse:function(){return!1},cast:null,gcd:Tt,xgcd:Pt,lcm:$t,Add:function(n,t,e,r){var i,u=J.Arithmetic;return Nn(n,I)&&(n=w(n,t.symbol,t.ring)),Nn(n,w)?n.terms.length&&((r=!0===r)&&(i=t._rsym,t=t.recur(!1),n=n.recur(!1)),t.terms=he(t.terms,n.terms,A,!0===e,t.ring),r&&i&&(t=t.recur(i))):(Nn(n,f)||u.isNumber(n))&&((n=A(n,Dn(t.symbol.length,0),t.ring)).equ(u.O)||(n=t.terms.length?he([t.terms.pop()],[n],A,!0===e,t.ring):[n],t.terms=t.terms.concat(n))),t},Mul:function(n,t,e){var r,i,u=J.Arithmetic,l=u.O;if(!t.terms.length)return t;if(Nn(n,I)&&(n=w(n,t.symbol,t.ring)),Nn(n,w))n.terms.length?((e=!0===e)&&(i=t._rsym,t=t.recur(!1),n=n.recur(!1)),t.terms=de(t.terms,n.terms,A,t.ring),e&&i&&(t=t.recur(i))):t.terms=[];else if(Nn(n,f)||u.isNumber(n))if((n=t.ring.cast(n)).equ(l))t.terms=[];else if(!n.equ(u.I))for(r=t.terms.length-1;0<=r;r--)t.terms[r]=t.terms[r].mul(n);return t},Div:function(t,e,n,r){var i,u,l=J.Arithmetic,s=l.O,o=l.I;if(n=!0===n,Nn(e,I)&&(e=w(e,t.symbol,t.ring)),Nn(e,w)){if(!e.terms.length)throw new Error("Division by zero in Abacus.MultiPolynomial!");return((r=!0===r)&&(e=e.recur(!1)),e.isConst())?(u=(e=e.cc()).equ(o)?t:w(Dn(t.terms.length,function(n){return t.terms[n].div(e)}),t.symbol,t.ring),n?[u,w.Zero(t.symbol,t.ring)]:u):(r&&(i=t._rsym,t=t.recur(!1)),u=ge(t.terms,e.terms,A,n,t.ring),u=n?[w(u[0],t.symbol,t.ring),w(u[1],t.symbol,t.ring)]:w(u,t.symbol,t.ring),r&&i&&(n?(u[0]=u[0].recur(i),u[1]=u[1].recur(i)):u=u.recur(i)),u)}if(Nn(e,f)||l.isNumber(e)){if((e=t.ring.cast(e)).equ(s))throw new Error("Division by zero in Abacus.MultiPolynomial!");return u=e.equ(o)?t:w(Dn(t.terms.length,function(n){return t.terms[n].div(e)}),t.symbol,t.ring),n?[u,w.Zero(t.symbol,t.ring)]:u}return t},C:function(n,t,e){return new w(n||J.Arithmetic.O,t||["x"],e||M.Q())},fromExpr:function(n,t,e){if(!Nn(n,N))return null;e=e||M.Q(),t=t||["x"];for(var r,i,u=n.symbols(),l=J.Arithmetic.O,s={},o=u.length-1;0<=o;o--)r=u[o],(i=n.terms[r].c()).equ(l)||(s[r]=i);return new w(s,t,e)},fromString:function(n,t,e){var r,i,u,l,s,o,m,c=J.Arithmetic,f={},a=[],h=/(\(?(?:(?:[\+\-])?\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+\}?)?(?:\s*\*?\s*[a-zA-Z](?:_\{?\d+\}?)?(?:\^\{?\d+\}?)?)*)?)?/g,d=/([a-zA-Z])(?:_\{?(\d+)\}?)?(?:\^\{?(\d+)\}?)?/g;if(e=e||M.Q(),!(n=H(String(n))).length)return w.Zero(t||["x"],e);for(;m=h.exec(n);){if(!m[0].length){if(h.lastIndex<n.length){h.lastIndex++;continue}break}if(H(m[0]).length){if(m[2]){for(i=m[2],""===(r=H(m[1]||""))||"+"===r?r="1":"-"===r&&(r="-1"),l={};o=d.exec(i);)s=o[1]+(o[2]?"_"+o[2]:""),0===(o=o[3]?parseInt(o[3],10):1)?l[1]=0:t&&-1===t.indexOf(s)||(t||-1!==a.indexOf(s)||a.push(s),l[s]=z.call(l,s)?l[s]+o:o);z.call(l,"1")&&1<rn(l).length&&delete l[1]}else i="1","+"===(r=H(m[1]||""))?r="1":"-"===r?r="-1":""===r&&(r="0"),(l={})[i]=0;u=v.fromString(r),(m=En(function(n,t){return n+(n.length?"*":"")+t+(1<l[t]?"^"+String(l[t]):"")},"",rn(l).sort())).length&&(f[m]=z.call(f,m)?f[m].add(u):u)}}return En(function(n,t){f[t]=e.cast(f[t]),f[t].equ(c.O)&&delete f[t]},null,rn(f)),new w(f,t||a.sort(),e)}},terms:null,symbol:null,ring:null,_n:null,_c:null,_str:null,_tex:null,_expr:null,_prim:null,_flat:null,_recur:null,_rsym:null,dispose:function(){var n=this;return n.terms=null,n.symbol=null,n.ring=null,n._n&&n===n._n._n&&(n._n._n=null),n._c&&n===n._c._c&&(n._c._c=null),n._n=null,n._c=null,n._str=null,n._tex=null,n._expr=null,n._prim=null,n._flat=null,n._recur=null,n._rsym=null,n},isInt:function(){var n,t=this.terms;if(Cn(this.ring.NumberClass,Z))return!0;for(n=t.length-1;0<=n;n--)if(!t[n].c.isInt())return!1;return!0},isReal:function(){var n,t=this.terms;if(!Cn(this.ring.NumberClass,v))return!0;for(n=t.length-1;0<=n;n--)if(!t[n].c.isReal())return!1;return!0},isImag:function(){var n,t=this.terms;if(!Cn(this.ring.NumberClass,v))return!1;for(n=t.length-1;0<=n;n--)if(!t[n].c.isImag())return!1;return!0},isMono:function(){var n=this.terms;return 1===n.length&&(!Nn(n[0].c,w)||n[0].c.isMono())&&0!==A.cmp(n[0].e,[0])},isConst:function(n){var t=this.terms;return n=!0===n,0===t.length||1===t.length&&(!n||!Nn(t[0].c,w)||t[0].c.isConst(n))&&0===A.cmp(t[0].e,[0])},isUni:function(n,t){var e,r,i,u=this.terms,l=this.symbol.indexOf(String(n||"x"));if(-1===l)return!1;for(t=!0===t,i=0,r=u.length-1;0<=r;r--)if(e=u[r].e,i=Q.max(i,e[l]),0!==A.cmp(e.slice(0,l).concat(e.slice(l+1)),[0]))return!1;return!t||0!==i},isRecur:function(n){n=!1!==n;for(var t=this.terms,e=t.length-1;0<=e;e--)if(Nn(t[e].c,w)&&(n||!t[e].c.isConst(!0)))return!0;return!1},deg:function(n,t){var e,r=this.terms,i=this.symbol;return arguments.length?(t=!0===t,-1!==(e=i.indexOf(String(n||"x")))&&r.length?t&&Nn(term[0].c,w)?r[0].e[e]+term[0].c.deg(n,t):r[0].e[e]:0):r.length?r[0].e:Dn(i.length,0)},maxdeg:function(e,r){var i,u=this,n=u.terms,t=u.symbol;return r=!0===r,arguments.length&&!0===e?En(function(n,t){return Q.max(n,u.maxdeg(t))},0,t):-1!==(i=arguments.length?t.indexOf(String(e||"x")):0)&&n.length?(e=t[i],En(function(n,t){return r&&Nn(t.c,w)?Q.max(n,t.e[i],t.e[i]+t.c.maxdeg(e,r)):Q.max(n,t.e[i])},0,n)):0},mindeg:function(e,r){var i,u=this,n=u.terms,t=u.symbol;return r=!0===r,arguments.length&&!0===e?En(function(n,t){return-1===n?u.mindeg(t,r):Q.min(n,u.mindeg(t,r))},-1,t):-1!==(i=arguments.length?t.indexOf(String(e||"x")):0)&&n.length?(e=t[i],En(function(n,t){t=t.e[i]+(r&&Nn(t.c,w)?t.c.mindeg(e,r):0);return-1===n?t:Q.min(n,t)},-1,n)):0},term:function(e,n){var t=this.terms,r=this.ring,i=this.symbol;return!0===n?t.reduce(function(n,t){return e===t.e.reduce(nt,0)&&(n=n.add(w([t],i,r))),n},w.Zero(i,r)):w(0<=e&&e<t.length?[t[e]]:[],i,r)},ltm:function(n,t){var e,r=this.terms,i=this.ring,u=this.symbol;return 1<arguments.length?-1!==(e=u.indexOf(String(t||"x")))&&r.length?(t=En(function(n,t){return(null==n||n.e[e]<t.e[e])&&(n=t),n},null,r),!0===n?w([t],u,i):t):!0===n?w([],u,i):A(i.Zero(),Dn(u.length,0),i):!0===n?w(r.length?[r[0]]:[],u,i):r.length?r[0]:A(0,Dn(u.length,0),i)},ttm:function(n,t){var e,r=this.terms,i=this.ring,u=this.symbol;return 1<arguments.length?-1!==(e=u.indexOf(String(t||"x")))&&r.length?(t=En(function(n,t){return(null==n||n.e[e]>t.e[e])&&(n=t),n},null,r),!0===n?w([t],u,i):t):!0===n?w([],u,i):A(i.Zero(),Dn(u.length,0),i):!0===n?w(r.length?[r[r.length-1]]:[],u,i):r.length?r[r.length-1]:A(0,Dn(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=J.Arithmetic,i=null;if(!1===u)return null==t._flat&&(t._flat=o.length<=1||!t.isRecur()?t:En(function(n,t){return n._add(Nn(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:En(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(qn(u))return En(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(En(function(n,t){var e,r=t.e[l],i=s-r,t=Nn(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,Dn(o.length,function(n){return l===n?s-t:0}))}).filter(A.isNonZero),o,m);n.isConst()&&Nn(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=J.Arithmetic,u=r.lc();if(u.equ(i.I)||u.equ(i.O)||Nn(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<n;n--)if(!u.divides(t[n].c)){e=!1;break}return e?w(r.terms.map(function(n){return n.div(u)}),r.symbol,r.ring):u.lt(i.O)?r.neg():r},primitive:function(n){var t,e,r,i,u,l=this,s=l.symbol,o=l.ring,m=o.associatedField(),c=l.terms,f=J.Arithmetic;return null==l._prim&&(c.length?l.isRecur()?(t=c.reduce(function(n,t){return n.push(Nn(t.c,w)?t.c.primitive(!0):[w([t],s,o),m.One()]),n},[]),r=m.gcd(t.map(function(n){return n[1]})),l._prim=[w(t.map(function(n,t){return A(n[0].mul(o.cast(n[1].div(r))),c[t].e,o)}),s,o),r]):Cn(o.NumberClass,v)?(i=l.isReal(),u=l.isImag(),i||u?u?(e=c.reduce(function(n,t){return f.mul(n,t.c.imag().den)},f.I),t=c.map(function(n){return n.c.mul(e).imag().num}),r=Nt(t),t=t.map(function(n){return f.div(n,r)}),f.gt(f.O,t[0])&&(t=t.map(function(n){return f.neg(n)}),r=f.neg(r)),l._prim=[w(t.map(function(n,t){return A(n,c[t].e,o)}),s,o),m.create(v.Img().mul(p(r,e).simpl()))]):(e=c.reduce(function(n,t){return f.mul(n,t.c.real().den)},f.I),t=c.map(function(n){return n.c.mul(e).real().num}),r=Nt(t),t=t.map(function(n){return f.div(n,r)}),f.gt(f.O,t[0])&&(t=t.map(function(n){return f.neg(n)}),r=f.neg(r)),l._prim=[w(t.map(function(n,t){return A(n,c[t].e,o)}),s,o),m.create(p(r,e).simpl())]):(r=o.gcd(c.map(function(n){return n.c})).simpl(),l._prim=[w(c.map(function(n){return A(n.c.div(r),n.e,o)}),s,o),r])):(e=Cn(o.NumberClass,Z)?f.I:c.reduce(function(n,t){return f.mul(n,t.c.den)},f.I),t=c.map(function(n){return n.c.mul(e).num}),r=Nt(t),t=t.map(function(n){return f.div(n,r)}),f.gt(f.O,t[0])&&(t=t.map(function(n){return f.neg(n)}),r=f.neg(r)),l._prim=[w(t.map(function(n,t){return A(n,c[t].e,o)}),s,o),m.create(p(r,e).simpl())]):l._prim=[l,m.One()]),!0===n?l._prim.slice():l._prim[0]},content:function(){return this.primitive(!0)[1]},equ:function(n,t){var e,r,i=J.Arithmetic,u=i.O,l=this.terms;if(i.isNumber(n))return i.equ(u,n)?0===l.length:1===l.length&&l[0].c.equ(n)&&0===A.cmp(l[0].e,[0]);if(Nn(n,f))return n.equ(u)?0===l.length:1===l.length&&l[0].c.equ(n)&&0===A.cmp(l[0].e,[0]);if(Nn(n,o)){if(t=!1!==t,n=Nn(n,I)?w(n,this.symbol,this.ring).terms:n,t||(l=this.recur(!1).terms,n=n.recur(!1)),e=n.terms,l.length!==e.length)return!1;for(r=l.length-1;0<=r;r--)if(!l[r].equ(e[r]))return!1;return!0}return Nn(n,R)?n.equ(this):Nn(n,[S,h,C])?(Nn(n,[S,h])&&(n=C(n)),!(1<l.length)&&(0===l.length?n.c().equ(u):((u=l[0].toTerm(this.symbol)).length||(u="1"),u===n.symbol&&n.c().equ(l[0].c)))):Nn(n,N)?this.toExpr().equ(n):!!On(n)&&(n===this.toString()||n===this.toTex())},gt:function(n){var t=J.Arithmetic;return Nn(n,f)||t.isNumber(n)?!this.isConst(!0)||this.cc().gt(n):Nn(n,R)?n.lt(this):Nn(n,o)?(Nn(n,I)&&(n=w(n,this.symbol,this.ring)),0<A.cmp(this.ltm(),n.ltm(),!0)):!!Nn(n,[N,C,h,S])&&this.toExpr().gt(n)},gte:function(n){var t=J.Arithmetic;return Nn(n,f)||t.isNumber(n)?!this.isConst(!0)||this.cc().gte(n):Nn(n,R)?n.lte(this):Nn(n,o)?(Nn(n,I)&&(n=w(n,this.symbol,this.ring)),0<=A.cmp(this.ltm(),n.ltm(),!0)):!!Nn(n,[N,C,h,S])&&this.toExpr().gte(n)},lt:function(n){var t=J.Arithmetic;return Nn(n,f)||t.isNumber(n)?this.isConst(!0)&&this.cc().lt(n):Nn(n,R)?n.gt(this):Nn(n,o)?(Nn(n,I)&&(n=w(n,this.symbol,this.ring)),A.cmp(this.ltm(),n.ltm(),!0)<0):!!Nn(n,[N,C,h,S])&&this.toExpr().lt(n)},lte:function(n){var t=J.Arithmetic;return Nn(n,f)||t.isNumber(n)?this.isConst(!0)&&this.cc().lte(n):Nn(n,R)?n.gte(this):Nn(n,o)?(Nn(n,I)&&(n=w(n,this.symbol,this.ring)),A.cmp(this.ltm(),n.ltm(),!0)<=0):!!Nn(n,[N,C,h,S])&&this.toExpr().lte(n)},real:function(){var t=this.ring;return Cn(t.NumberClass,v)?w(this.terms.map(function(n){return A(n.c.real(),n.e,t)}),this.symbol,t):this},imag:function(){var t=this.ring;return Cn(t.NumberClass,v)?w(this.terms.map(function(n){return A(n.c.imag(),n.e,t)}),this.symbol,t):w([],this.symbol,t)},abs:function(){return this.lc().lt(J.Arithmetic.O)?this.neg():this},conj:function(){var n=this,t=n.ring;return null==n._c&&(Cn(t.NumberClass,v)?(n._c=w(n.terms.map(function(n){return A(n.c.conj(),n.e,t)}),n.symbol,t),n._c._c=n):n._c=n),n._c},neg:function(){var t=this;J.Arithmetic;return null==t._n&&(t._n=w(Dn(t.terms.length,function(n){return t.terms[n].neg()}),t.symbol,t.ring),t._n._n=t),t._n},inv:yn,add:function(n){var t=J.Arithmetic;return Nn(n,[N,C,h,S])?this.toExpr().add(n):Nn(n,R)?n.add(this):t.isNumber(n)||Nn(n,[f,o])?w.Add(n,this.clone(),!1,!0):this},_add:function(n){return Nn(n,o)?w.Add(n,this.clone(),!1,!1):this.add(n)},sub:function(n){var t=J.Arithmetic;return Nn(n,[N,C,h,S])?this.toExpr().sub(n):Nn(n,R)?n.neg().add(this):t.isNumber(n)||Nn(n,[f,o])?w.Add(n,this.clone(),!0,!0):this},_sub:function(n){return Nn(n,o)?w.Add(n,this.clone(),!0,!1):this.sub(n)},mul:function(n){var t=J.Arithmetic;return Nn(n,[N,C,h,S])?this.toExpr().mul(n):Nn(n,R)?n.mul(this):t.isNumber(n)||Nn(n,[f,o])?w.Mul(n,this.clone(),!0):this},_mul:function(n){return Nn(n,o)?w.Mul(n,this.clone(),!1):this.mul(n)},div:function(n,t){return Nn(n,R)?R(this).div(n):Nn(n,[f,o])||J.Arithmetic.isNumber(n)?w.Div(this,n,!0===t,!0):this},_div:function(n,t){return Nn(n,o)?w.Div(this,n,!0===t,!1):this.div(n,t)},multidiv:function(n,t){var e,r,i,u,l,s,o,m,c,f=this._rsym;J.Arithmetic;if(t=!0===t,Nn(n,w)&&(n=[n]),!n||!n.length)return t?[[],this]:[];for(r=Dn(u=n.length,function(){return[]}),i=[],e=this.recur(!1).clone(),n=n.map(function(n){return n.recur(!1)});e.terms.length;){for(s=e.ltm(),c=!1,l=0;l<u;l++)if((o=n[l].ltm()).divides(s)){c=!0;break}c?(m=s.div(o),r[l]=he(r[l],[m],A,!1,e.ring),e.terms=he(e.terms,n[l].terms.map(function(n){return n.mul(m)}),A,!0,e.ring)):(e.terms.shift(),t&&(i=he(i,[s],A,!1,e.ring)))}return r=r.map(function(n){return n=w(n,e.symbol,e.ring),f&&(n=n.recur(f)),n}),t&&(i=w(i,e.symbol,e.ring),f&&(i=i.recur(f))),t?[r,i]:r},mod:function(n){return this.div(n,!0)[1]},_mod:function(n){return this._div(n,!0)[1]},multimod:function(n){return this.multidiv(n,!0)[1]},divmod:function(n){return this.div(n,!0)},_divmod:function(n){return this._div(n,!0)},multidivmod:function(n){return this.multidiv(n,!0)},divides:function(n){var t=J.Arithmetic;return!this.equ(t.O)&&(!!Nn(n,R)||((Nn(n,[I,f])||t.isNumber(n))&&(n=w(n,this.symbol,this.ring)),!!Nn(n,w)&&n.mod(this).equ(t.O)))},pow:function(n){var t,e,r=J.Arithmetic,i=this._rsym;if((n=Z.cast(n)).lt(r.O)||n.gt(un))return null;if(0===(n=r.val(n.num)))return w.One(this.symbol,this.ring);if(1===n)return this;if(2===n)return w.Mul(this,this.clone(),!0);for(t=w.One(this.symbol,this.ring),e=this.recur(!1).clone();0!==n;)1&n&&(t=w.Mul(e,t,!1)),n>>=1,e=w.Mul(e,e,!1);return i&&(t=t.recur(i)),t},rad:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).equ(t.I)?this:at(this,n)},compose:function(n){var f=this.symbol,a=this.ring,t=this._rsym,h=J.Arithmetic,d=w.Zero(f,a),g=c(),n=function n(t,e,r){for(r=r||0;r<f.length&&0===t.maxdeg(f[r],!0);)r++;if(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(),z.call(g,i))return g[i];for(o=z.call(e,f[r])?w(e[f[r]]||h.O,f,a):w([A(a.One(),Dn(f.length,function(n){return n===r?1:0}),a)],f,a),m=Nn(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;0<u;)u--,s=w.Mul(o,s,!1),l<c.length&&u===c[l].e[r]&&(m=Nn(c[l].c,w)?n(c[l].c,e,r+1):c[l].c,s=w.Add(m,s,!1,!1),l++);return g[i]=s}(this.recur(!0),n||{});return t&&(n=n.recur(t)),n},shift:function(r,i){var u,n=this.symbol,l=this.ring,t=J.Arithmetic;return r=String(r||n[0]),i=i||0,-1===(u=n.indexOf(r))&&(u=0),r=n[u],0===(i=t.val(i))?this:i<0?-i>this.maxdeg(r,!0)?w.Zero(n,l):w(this.terms.map(function(n){var t,e;return Nn((n=n.clone()).c,w)?(e=n.e[u],t=i,0<e&&(-t<=e?(n.e[u]+=t,t=0):(n.e[u]=0,t+=e)),t<0&&(n.c=n.c.shift(r,t))):n.e[u]>=-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 Nn((n=n.clone()).c,w)&&0<n.c.maxdeg(r,!0)?n.c=n.c.shift(r,i):n.e[u]+=i,n}).sort(A.sortDecr),n,l)},d:function(r,i){var u,n=this.symbol,t=this.ring,l=J.Arithmetic,s=l.O,o=l.I;return r=String(r||n[0]),null==i&&(i=1),(i=l.val(i))<0?null:0===i?this:(-1===(u=n.indexOf(r))&&(u=0),r=n[u],i>this.maxdeg(r,!0)?w.Zero(n,t):w(this.terms.map(function(n){var t,e;if(Nn(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]=Q.max(n.e[u]-1,0),0<e&&!n.c.equ(s););return n}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}).filter(A.isNonZero).sort(A.sortDecr),n,t))},evaluate:function(n){var f=this.symbol,a=this.ring,h=J.Arithmetic.O,d=c();return function n(t,e,r){for(r=r||0;r<f.length&&0===t.maxdeg(f[r],!0);)r++;if(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(),z.call(d,i))return d[i];for(o=(z.call(e,f[r])?e[f[r]]:h)||h,m=Nn(c[0].c,w)?n(c[0].c,e,r+1):c[0].c,u=c[0].e[r],s=m,l=1;0<u;)u--,s=s.mul(o),l<c.length&&u===c[l].e[r]&&(s=(m=Nn(c[l].c,w)?n(c[l].c,e,r+1):c[l].c).add(s),l++);return d[i]=s}(this.recur(!0),n||{})},toString:function(){var n,t,e,r,i,u="",l=!1,s=J.Arithmetic;if(null==this._str){for(n=this.terms,e=this.symbol,r=0,i=n.length;r<i;r++)t=n[r],u+=(l&&(Nn(t.c,w)&&!t.c.isConst(!0)||Nn(t.c,[R,d])&&(!t.c.isConst(!0)||!t.c.den.equ(s.I))||!t.c.isReal()||t.c.gt(s.O))?"+":"")+t.toTerm(e),l=!0;this._str=u.length?u:"0"}return this._str},toTex:function(){var n,t,e,r,i,u="",l=!1,s=J.Arithmetic;if(null==this._tex){for(n=this.terms,e=this.symbol,r=0,i=n.length;r<i;r++)t=n[r],u+=(l&&(Nn(t.c,w)&&!t.c.isConst(!0)||Nn(t.c,[R,d])&&(!t.c.isConst(!0)||!t.c.den.equ(s.I))||!t.c.isReal()||t.c.gt(s.O))?"+":"")+t.toTerm(e,!0),l=!0;this._tex=u.length?u:"0"}return this._tex},toDec:function(n){for(var t,e="",r=!1,i=J.Arithmetic,u=this.terms,l=this.symbol,s=0,o=u.length;s<o;s++)t=u[s],e+=(r&&(Nn(t.c,w)&&!t.c.isConst(!0)||Nn(t.c,[R,d])&&(!t.c.isConst(!0)||!t.c.den.equ(i.I))||!t.c.isReal()||t.c.gt(i.O))?"+":"")+t.toTerm(l,!1,!1,!0,n),r=!0;return e.length||(e="0",wn(n)&&0<n&&(e+="."+new Array(n+1).join("0"))),e},toExpr:function(){var n,t,e,r,i,u,l=J.Arithmetic.O;if(null==this._expr)if(this.isRecur())this._expr=this.recur(!1).toExpr();else{for(n=this.terms,e=this.symbol,u=[],r=n.length-1;0<=r;r--)i=(t=n[r]).toTerm(e,!1,!0),u.push(C(i.length?i:"1",t.c));u.length||u.push(C(1,l)),this._expr=N(u)}return this._expr}})).cast=function(n,t,e){return e=e||M.Q(),qn(t=t||"x")||(t=[String(t)]),ke(function(n){return Nn(n,w)&&n.ring===e},function(n){return On(n)?w.fromString(n,t,e):new w(n,t,e)})(n)},(R=J.RationalFunc=n(a,{constructor:function n(){var t,e=J.Arithmetic,r=arguments,i=n.autoSimplify,u=4<r.length&&!0===r[4],l=3<r.length&&Nn(r[3],M)?r[3]:null,s=2<r.length?(qn(r[2]),r[2]):null,r=1<r.length?(t=r[0],r[1]):1===r.length?(t=r[0],null):t=null;if(!Nn(this,n))return new n(t,r,s,l,u);if(Nn(t,n)?(u=t._simpl,l=t.ring,s=t.symbol,r=t.den,t=t.num):Nn(t,I)&&(l=l||t.ring,s=s||[t.symbol]),l=Nn(l,M)?l:M.Q(),s=qn(s)?s:[String(s||"x")],null==t?t=w.Zero(s,l):Nn(t,w)||(t=w(t,s,l)),null==r?r=w.One(t.symbol,t.ring):Nn(r,w)||(r=w(r,t.symbol,t.ring)),r.equ(e.O))throw new Error("Zero denominator in Abacus.RationalFunc!");t.equ(e.O)&&!r.equ(e.I)&&(r=w.One(t.symbol,t.ring)),r.lc().lt(e.O)&&(r=r.neg(),t=t.neg()),this.num=t,this.den=r,u?this._simpl=!0:i&&this.simpl()},__static__:{autoSimplify:!0,Zero:function(n,t){return new R(w.Zero(n,t),null,null,null,!0)},One:function(n,t){return new R(w.One(n,t),null,null,null,!0)},MinusOne:function(n,t){return new R(w.MinusOne(n,t),null,null,null,!0)},hasInverse:function(){return!0},cast:null,gcd:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,e=En(function(n,t){return t.den.mul(n)},J.Arithmetic.I,t);return R(Tt(Dn(t.length,function(n){return t[n].num.mul(e.div(t[n].den))})),e)},xgcd:function(){var e,t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments;if(t.length)return e=En(function(n,t){return t.den.mul(n)},J.Arithmetic.I,t),Pt(Dn(t.length,function(n){return t[n].num.mul(e.div(t[n].den))})).map(function(n,t){return 0===t?R(n,e):R(n)})},lcm:function(){var t=arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments,e=En(function(n,t){return t.den.mul(n)},J.Arithmetic.I,t);return R($t(Dn(t.length,function(n){return t[n].num.mul(e.div(t[n].den))})),e)},fromString:function(n,t,e){var r,i,u,l,s,o=0,m=0,c=["",""],f="",a=0,h=/\s/;if(e=e||M.Q(),qn(t=t||"x")||(t=[String(t)]),!(n=H(String(n))).length)return R.Zero(t,e);if("-"===n.charAt(0)||"+"===n.charAt(0)){if(f=n.charAt(0),!(n=H(n.slice(1))).length)return R.Zero(t,e);f="-"===f?"-":""}for(r="\\frac"===n.slice(0,5),i=n.length,a=r?5:0,l=0,u=n.charAt(a),r&&"{"===u&&(m++,a++);a<i;)u=n.charAt(a++),h.test(u)||("/"===u?r||o||m||!(c[l].length&&")"===c[l].charAt(c[l].length-1)||a<i&&"("===n.charAt(a))?c[l]+=u:l=1:"("===u?(o++,c[l]+=u):")"===u?(o--,c[l]+=u,r||o||m||!(i<=a||"/"===n.charAt(a))||(a<i&&"/"===n.charAt(a)&&a++,l=1)):"{"===u?(m++,c[l]+=u):"}"===u?(m--,o||m?c[l]+=u:(r&&a<i&&"{"===n.charAt(a)&&(m++,a++),l=1)):c[l]+=u);return e=o||m?(s=w.fromString(c[0],t,e),null):(c[0].length&&c[1].length&&"("===c[0].charAt(0)&&")"===c[0].charAt(c[0].length-1)&&(c[0]=H(c[0].slice(1,-1))),c[1].length&&"("===c[1].charAt(0)&&")"===c[1].charAt(c[1].length-1)&&(c[1]=H(c[1].slice(1,-1))),s=w.fromString(c[0],t,e),c[1].length?w.fromString(c[1],t,e):null),"-"===f&&(s=s.neg()),new R(s,e)},fromExpr:function(n,t,e){return Nn(n,N)?(e=e||M.Q(),qn(t=t||"x")||(t=[String(t)]),new R(w.fromExpr(n,t,e))):null}},num:null,den:null,_n:null,_i:null,_c:null,_str:null,_tex:null,_simpl:!1,dispose:function(){var n=this;return n._n&&n===n._n._n&&(n._n._n=null),n._i&&n===n._i._i&&(n._i._i=null),n._c&&n===n._c._c&&(n._c._c=null),n.num=null,n.den=null,n._n=null,n._i=null,n._c=null,n._str=null,n._tex=null,n},isInt:function(){return this.num.isInt()&&this.den.equ(J.Arithmetic.I)},isReal:function(){return this.num.isReal()&&this.den.isReal()||this.num.isImag()&&this.den.isImag()},isImag:function(){return this.num.isReal()&&this.den.isImag()||this.num.isImag()&&this.den.isReal()},isConst:function(n){return this.num.isConst(n)&&this.den.isConst(n)},c:function(){return this.num.c().div(this.den.c())},neg:function(){return null==this._n&&(this._n=R(this.num.neg(),this.den,null,null,this._simpl),this._n._n=this),this._n},inv:function(){return null==this._i&&(this._i=R(this.den,this.num,null,null,this._simpl),this._i._i=this),this._i},real:function(){return R(this.num.real(),this.den.real())},imag:function(){return R(this.num.imag(),this.den.imag())},abs:function(){return R(this.num.abs(),this.den,null,null,this._simpl)},conj:function(){return null==this._c&&(this._c=R(this.num.conj(),this.den.conj()),this._c._c=this),this._c},equ:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o])||t.isNumber(n)?this.num.equ(this.den.mul(n)):Nn(n,[p,R])?this.num.mul(n.den).equ(this.den.mul(n.num)):!!On(n)&&(n===this.toString()||n===this.toTex())},gt:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o])||t.isNumber(n)?this.num.gt(this.den.mul(n)):!!Nn(n,[p,R])&&this.num.mul(n.den).gt(this.den.mul(n.num))},gte:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o])||t.isNumber(n)?this.num.gte(this.den.mul(n)):!!Nn(n,[p,R])&&this.num.mul(n.den).gte(this.den.mul(n.num))},lt:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o])||t.isNumber(n)?this.num.lt(this.den.mul(n)):!!Nn(n,[p,R])&&this.num.mul(n.den).lt(this.den.mul(n.num))},lte:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()&&(n=n.real()),Nn(n,[Z,m,v,o])||t.isNumber(n)?this.num.lte(this.den.mul(n)):!!Nn(n,[p,R])&&this.num.mul(n.den).lte(this.den.mul(n.num))},add:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||t.isNumber(n))&&(n=p(n)),Nn(n,[v,o])?R(this.num.add(this.den.mul(n)),this.den):Nn(n,[p,R])?R(this.num.mul(n.den).add(this.den.mul(n.num)),this.den.mul(n.den)):this},sub:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||t.isNumber(n))&&(n=p(n)),Nn(n,[v,o])?R(this.num.sub(this.den.mul(n)),this.den):Nn(n,[p,R])?R(this.num.mul(n.den).sub(this.den.mul(n.num)),this.den.mul(n.den)):this},mul:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||t.isNumber(n))&&(n=p(n)),Nn(n,[v,o])?R(this.num.mul(n),this.den):Nn(n,[p,R])?R(this.num.mul(n.num),this.den.mul(n.den)):this},div:function(n){var t=J.Arithmetic;return Nn(n,v)&&n.isReal()?n=n.real():(Nn(n,[Z,m])||t.isNumber(n))&&(n=p(n)),Nn(n,[v,o])?R(this.num,this.den.mul(n)):Nn(n,[p,R])?R(this.num.mul(n.den),this.den.mul(n.num)):this},mod:yn,divmod:yn,divides:function(n){return!this.equ(J.Arithmetic.O)},compose:function(n){return R(this.num.compose(n),this.den.compose(n))},pow:function(n){var t=J.Arithmetic,e=this.num,r=this.den;return(n=Z.cast(n)).gt(un)?null:((n=t.val(n.num))<0&&(n=-n,t=e,e=r,r=t),0===n?R.One(e.symbol,e.ring):1===n?R(e,r,e.symbol,e.ring,this._simpl):R(e.pow(n),r.pow(n),e.symbol,e.ring,this._simpl))},rad:function(n){var t=J.Arithmetic;return(n=Z.cast(n)).equ(t.I)?this:ht(this,n)},shift:function(n,t){var e=J.Arithmetic;return n=String(n||this.num.symbol[0]),t=t||0,0===(t=e.val(t))?this:t<0?R(this.num,this.den.shift(n,-t)):R(this.num.shift(n,t),this.den)},d:function(n,t){var e,r,i,u,l=J.Arithmetic;if(n=String(n||this.num.symbol[0]),null==t&&(t=1),(t=l.val(t))<0)return null;if(0===t)return this;for(e=this.num,r=this.den;0<t&&!e.equ(l.O);)e=i=e.d(n,1).mul(r).sub(e.mul(r.d(n,1))),r=u=r.pow(2),t--;return R(i,u)},simpl:function(){var n,t,e,r,i,u=this,l=J.Arithmetic;return u._simpl||(u.num.equ(l.O)?u.den=w.One(u.num.symbol,u.num.ring):u.den.equ(l.I)||(1===u.num.symbol.length&&1===u.den.symbol.length?(i=Tt(u.num,u.den),u.num=u.num.div(i),u.den=u.den.div(i)):(i=u.num.divmod(u.den))&&i[1].equ(l.O)?(u.num=i[0],u.den=w.One(u.num.symbol,u.num.ring)):(i=u.den.divmod(u.num))&&i[1].equ(l.O)&&(u.den=i[0],u.num=w.One(u.num.symbol,u.num.ring)),n=u.num.primitive(!0),i=u.den.primitive(!0),n[1].equ(i[1])?(u.num=n[0],u.den=i[0]):Cn(n[0].ring.NumberClass,v)?n[1].isImag()&&i[1].isImag()?(r=Nt(t=l.mul(i[1].imag().den,n[1].imag().num),e=l.mul(n[1].imag().den,i[1].imag().num)),u.num=n[0].mul(l.div(t,r)),u.den=i[0].mul(l.div(e,r))):n[1].isReal()&&i[1].isReal()?(r=Nt(t=l.mul(i[1].real().den,n[1].real().num),e=l.mul(n[1].real().den,i[1].real().num)),u.num=n[0].mul(l.div(t,r)),u.den=i[0].mul(l.div(e,r))):(r=Et(n[1],i[1]),u.num=n[0].mul(n[1].div(r)),u.den=i[0].mul(i[1].div(r))):(r=Nt(t=l.mul(i[1].den,n[1].num),e=l.mul(n[1].den,i[1].num)),u.num=n[0].mul(l.div(t,r)),u.den=i[0].mul(l.div(e,r)))),u._simpl=!0),u},evaluate:function(n){return this.num.evaluate(n).div(this.den.evaluate(n))},toString:function(){var n=this,t=J.Arithmetic;return null==n._str&&(n._str=n.den.equ(t.I)?n.num.toString():(n.num.isMono()||n.num.isConst(!0)&&(n.num.isReal()||n.num.isImag())?n.num.toString():"("+n.num.toString()+")")+"/"+(n.den.isConst(!0)&&n.den.isReal()?n.den.toString():"("+n.den.toString()+")")),n._str},toTex:function(){var n=J.Arithmetic;return null==this._tex&&(this._tex=this.den.equ(n.I)?this.num.toTex():"\\frac{"+this.num.toTex()+"}{"+this.den.toTex()+"}"),this._tex},toDec:function(n){var t=J.Arithmetic;return this.den.equ(t.I)?this.num.toDec(n):"("+this.num.toDec(n)+")/("+this.den.toDec(n)+")"}})).cast=function(n,t,e){return e=e||M.Q(),qn(t=t||"x")||(t=[String(t)]),ke([R],function(n){return On(n)?R.fromString(n,t,e):new R(w(n,t,e))})(n)},M=J.Ring=n({constructor:function n(t,e,r){var i=this;if(!Nn(i,n))return new n(t,e,r);qn(t)?(i.Modulo=Z.cast(t[1]),t=t[0]):i.Modulo=null,Cn(t,[f,N,d])||(t=v),i.NumberClass=t,Cn(i.NumberClass,[N,d])&&(e=null),qn(e)&&e.length?(e=function(n,t){t=Sn(t)?t:String;for(var e,r=c(),i=[],u=0,l=n.length;u<l;u++)e=t(n[u]),z.call(r,e)?i.push(u):r[e]=u;for(;i.length;)n.splice(i.pop(),1);return n}(e.map(String)),i.CoefficientRing=Cn(i.NumberClass,m)&&i.Modulo?m===i.NumberClass?n.Zp(i.Modulo)():n([i.NumberClass,i.Modulo]):Cn(i.NumberClass,Z)?Z===i.NumberClass?n.Z():n(i.NumberClass):Cn(i.NumberClass,p)?p===i.NumberClass?n.Q():n(i.NumberClass):v===i.NumberClass?n.C():n(i.NumberClass),!0===r?(i.PolynomialClass=R,i.PolynomialSymbol=e):1===e.length?(i.PolynomialClass=I,i.PolynomialSymbol=e[0]):(i.PolynomialClass=w,i.PolynomialSymbol=e)):(!0===r&&(Cn(i.NumberClass,Z)?i.NumberClass=p:Cn(i.NumberClass,N)&&(i.NumberClass=d)),i.PolynomialClass=null,i.CoefficientRing=null,i.PolynomialSymbol=null)},__static__:{ZZ:null,QQ:null,CC:null,EE:null,RR:null,Z:function(){null==M.ZZ&&(M.ZZ=M(Z));var n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments).map(String).filter(function(n){return 0<n.length});return n.length?M(Z,n):M.ZZ},Zn:function(t){return t=Z.cast(t),function(){var n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments).map(String).filter(function(n){return 0<n.length});return n.length?M([m,t],n):M([m,t])}},Q:function(){null==M.QQ&&(M.QQ=M(p));var n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments).map(String).filter(function(n){return 0<n.length});return n.length?M(p,n):M.QQ},C:function(){null==M.CC&&(M.CC=M(v));var n=G.call(arguments.length&&(qn(arguments[0])||An(arguments[0]))?arguments[0]:arguments).map(String).filter(function(n){return 0<n.length});return n.length?M(v,n):M.CC},E:function(){return null==M.EE&&(M.EE=M(N)),M.EE},R:function(){return null==M.RR&&(M.RR=M(d)),M.RR}},NumberClass:null,Modulo:null,PolynomialClass:null,CoefficientRing:null,PolynomialSymbol:null,_str:null,_tex:null,dispose:function(){return this.NumberClass=null,this.Modulo=null,this.PolynomialClass=null,this.CoefficientRing=null,this.PolynomialSymbol=null,this._str=null,this._tex=null,this},Zero:function(){return this.PolynomialClass?this.PolynomialClass.Zero(this.PolynomialSymbol,this.CoefficientRing):Cn(this.NumberClass,[N,d])?new this.NumberClass:this.NumberClass.Zero(this.Modulo)},One:function(){return this.PolynomialClass?this.PolynomialClass.One(this.PolynomialSymbol,this.CoefficientRing):Cn(this.NumberClass,[N,d])?new this.NumberClass(1):this.NumberClass.One(this.Modulo)},MinusOne:function(){return this.PolynomialClass?this.PolynomialClass.MinusOne(this.PolynomialSymbol,this.CoefficientRing):Cn(this.NumberClass,[N,d])?new this.NumberClass(-1):this.NumberClass.MinusOne(this.Modulo)},isSymbolic:function(){return Cn(this.NumberClass,[N,d])||null!=this.PolynomialClass&&Cn(this.PolynomialClass,[I,w,R])},isReal:function(){return!Cn(this.NumberClass,v)},isField:function(){return this.PolynomialClass?this.PolynomialClass.hasInverse():!!Cn(this.NumberClass,d)||!Cn(this.NumberClass,N)&&(this.NumberClass.hasInverse()&&(!this.Modulo||this.Modulo.isPrime()))},associatedField:function(){var n=this;return n.PolynomialClass?Cn(n.PolynomialClass,R)?n:M(n.Modulo?[n.NumberClass,n.Modulo]:n.NumberClass,[].concat(n.PolynomialSymbol),!0):Cn(n.NumberClass,N)?M.R():Cn(n.NumberClass,Z)?M.Q():n.isField()?n:null},hasGCD:function(){return this.PolynomialClass?(Cn(this.PolynomialClass,I)||1===this.PolynomialSymbol.length)&&Sn(this.PolynomialClass.gcd)&&Sn(this.PolynomialClass.xgcd):Sn(this.NumberClass.gcd)&&Sn(this.NumberClass.xgcd)&&(!this.Modulo||this.Modulo.isPrime())},gcd:function(){if(!this.hasGCD())throw new Error("Abacus.Ring instance does not support GCD!");return(this.PolynomialClass?this.PolynomialClass:this.NumberClass).gcd.apply(null,arguments)},xgcd:function(){if(!this.hasGCD())throw new Error("Abacus.Ring instance does not support xGCD!");return(this.PolynomialClass?this.PolynomialClass:this.NumberClass).xgcd.apply(null,arguments)},lcm:function(){if(!this.hasGCD())throw new Error("Abacus.Ring instance does not support LCM!");return(this.PolynomialClass?this.PolynomialClass:this.NumberClass).lcm.apply(null,arguments)},cast:function(n){return this.PolynomialClass?this.PolynomialClass.cast(n,this.PolynomialSymbol,this.CoefficientRing):this.Modulo?this.NumberClass.cast(n,this.Modulo):this.NumberClass.cast(n)},create:function(){var n=this,t=arguments;return t.length?Cn(n.PolynomialClass,R)?((t=G.call(t,0,2)).length<2&&t.push(null),n.PolynomialClass.apply(null,t.concat([n.PolynomialSymbol,n.CoefficientRing]))):n.PolynomialClass?n.PolynomialClass.apply(null,[t[0],n.PolynomialSymbol,n.CoefficientRing]):n.NumberClass.apply(null,n.Modulo?[t[0],n.Modulo]:t):n.Zero()},fromString:function(n){return(n=H(String(n))).length?this.PolynomialClass?this.PolynomialClass.fromString(n,this.PolynomialSymbol,this.CoefficientRing):Cn(this.NumberClass,[N,d])?this.NumberClass.fromString(n):this.NumberClass.fromString(n,this.Modulo):this.Zero()},fromExpr:function(n){return Nn(n,N)?this.PolynomialClass?this.PolynomialClass.fromExpr(n,this.PolynomialSymbol,this.CoefficientRing):this.cast(n.c()):null},fromValues:function(n){return Cn(this.PolynomialClass,I)?this.PolynomialClass.fromValues(n,this.PolynomialSymbol,this.CoefficientRing):null},toString:function(){var n=this;return null==n._str&&(n._str=(Cn(n.NumberClass,m)?"Zn("+n.Modulo.toString()+")(":Cn(n.NumberClass,Z)?"Z(":Cn(n.NumberClass,p)?"Q(":"C(")+(n.PolynomialSymbol?'"'+[].concat(n.PolynomialSymbol).join('","')+'"':"")+")",Cn(n.PolynomialClass,R)&&(n._str+=".associatedField()")),n._str},toTex:function(){var n=this;return null==n._tex&&(n._tex="\\mathbb"+(Cn(n.NumberClass,m)?"{Z}_{"+n.Modulo.toTex()+"}":Cn(n.NumberClass,Z)?"{Z}":Cn(n.NumberClass,p)?"{Q}":"{C}")+(n.PolynomialSymbol?"["+[].concat(n.PolynomialSymbol).map(Zn).join(",")+"]":""),Cn(n.PolynomialClass,R)&&(n._tex="\\mathbf{Fr}["+n._tex+"]")),n._tex}}),E=J.Matrix=n(_,{constructor:function n(t,e,r,i){var u,l,s,o,m=this;if(!Nn(m,n))return new n(t,e,r,i);if(Nn(t,M)||(t=M.Z()),m.ring=t,Nn(e,n))m.val=e.val.map(function(n){return n.slice()}),m.ring!==e.ring&&(m.val=m.ring.cast(m.val));else if(qn(e)||An(e))qn(e[0])||An(e[0])?(An(e)&&(e=G.call(e)),An(e[0])&&(e=e.map(function(n){return G.call(n)})),m.val=m.ring.cast(e)):m.val=r?Dn(1,function(n){return Dn(e.length,function(n){return m.ring.cast(e[n])})}):Dn(e.length,function(t){return Dn(1,function(n){return m.ring.cast(e[t])})});else if(null==r&&(r=e),(e=0|+(e||0))<0&&(e=0),(r=0|+(r||0))<0&&(r=0),m.val=Dn(e,function(n){return Dn(r,function(n){return m.ring.Zero()})}),In(i))for(u in i)z.call(i,u)&&-1!==u.indexOf(",")&&(l=i[u],s=(u=u.split(",").map(function(n){return parseInt(H(n),10)}))[0],o=u[1],0<=s&&s<m.val.length&&0<=o&&o<m.val[0].length&&(m.val[s][o]=m.ring.cast(l)));m.nr=m.val.length,m.nc=m.nr?m.val[0].length:0},__static__:{hasInverse:function(){return!1},isCommutative:function(){return!1},Zero:function(n,t,e){return n=n||M.Z(),E.C(n,t,e,n.Zero())},One:function(n,t){return n=n||M.Z(),E.D(n,t,t,n.One())},I:function(n,t){return E.One(n,t)},C:function(n,t,e,r){return n=n||M.Z(),r=r||n.Zero(),null==e&&(e=t),e=+e,(t=+t)<0||e<0?null:new E(n,Dn(t,function(n){return Dn(e,function(n){return r})}))},D:function(n,t,e,r){var i=(n=n||M.Z()).Zero();return r=n.cast(r||i),null==e&&(e=t),e=+e,(t=+t)<0||e<0?null:new E(n,Dn(t,function(t){return Dn(e,function(n){return t===n?qn(r)||An(r)?t<r.length?r[t]:i:r:i})}))},T:function(e){var n=e.length;return Dn(n?e[0].length:0,function(t){return Dn(n,function(n){return e[n][t]})})},ARR:function(e,r,n,i){return e=e||M.Z(),E(e,Dn(n,function(t){return Dn(i,function(n){n=t*i+n;return n<r.length?e.cast(r[n]):e.Zero()})}))},SWAPR:function(n,t,e){var r;return t!==e&&(r=n[t],n[t]=n[e],n[e]=r),n},SWAPC:function(n,t,e){if(t!==e)for(var r,i=n.length,u=0;u<i;u++)r=n[u][t],n[u][t]=n[u][e],n[u][e]=r;return n},ADDR:function(n,t,e,r,i,u,l){n=n||M.Z();var s,o=t[0].length;for(null==i&&(i=n.One()),null==u&&(u=n.One()),s=l||0;s<o;s++)t[e][s]=n.cast(u.mul(t[e][s]).add(i.mul(t[r][s])));return t},ADDC:function(n,t,e,r,i,u,l){n=n||M.Z();var s,o=t.length;for(null==i&&(i=n.One()),null==u&&(u=n.One()),s=l||0;s<o;s++)t[s][e]=n.cast(u.mul(t[s][e]).add(i.mul(t[s][r])));return t},MULR:function(n,t,e,r,i,u,l,s){n=n||M.Z();for(var o,m,c=t[0].length,f=0;f<c;f++)o=t[e][f],m=t[r][f],t[e][f]=n.cast(i.mul(o).add(u.mul(m))),t[r][f]=n.cast(l.mul(o).add(s.mul(m)));return t},MULC:function(n,t,e,r,i,u,l,s){n=n||M.Z();for(var o,m,c=t.length,f=0;f<c;f++)o=t[f][e],m=t[f][r],t[f][e]=n.cast(i.mul(o).add(l.mul(m))),t[f][r]=n.cast(u.mul(o).add(s.mul(m)));return t},toString:function(n,e){if(!qn(n))return String(n);e=String(e||"|");var r=qn(n[0])?Dn(n[0].length,0):0;return(n=n.map(function(n,t){if(qn(n))return n.map(function(n,t){n=String(n);return qn(r)?n.length>r[t]&&(r[t]=n.length):n.length>r&&(r=n.length),n});n=String(n);return qn(r)?n.length>r[0]&&(r[0]=n.length):n.length>r&&(r=n.length),n})).map(function(n,t){return e+(qn(n)?n.map(function(n,t){return Yn(n,qn(r)?r[t]:r)}).join(" "):Yn(n,qn(r)?r[0]:r))+e}).join("\n")},toTex:function(n,t){return qn(n)?"\\begin{"+(t="pmatrix"===t?"pmatrix":"bmatrix")+"}"+n.map(function(n){return qn(n)?n.map(Mn).join(" & "):Mn(n)}).join(" \\\\ ")+"\\end{"+t+"}":Mn(n)},toDec:function(n,e,r){if(!qn(n))return Sn(n.toDec)?n.toDec(e):String(n);r=String(r||"|");var i=qn(n[0])?Dn(n[0].length,0):0;return(n=n.map(function(n,t){if(qn(n))return n.map(function(n,t){n=n.toDec(e);return qn(i)?n.length>i[t]&&(i[t]=n.length):n.length>i&&(i=n.length),n});n=n.toDec(e);return qn(i)?n.length>i[0]&&(i[0]=n.length):n.length>i&&(i=n.length),n})).map(function(n,t){return r+(qn(n)?n.map(function(n,t){return Yn(n,qn(i)?i[t]:i)}).join(" "):Yn(n,qn(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 Dn(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<this.nr?this.val[n].slice():null},col:function(t){var e=this;return 0<=t&&t<e.nc?Dn(e.nr,function(n){return e.val[n][t]}):null},diag:function(n){var t,e,r=this;return 0<=(e=(t=0<(n=n||0)?0:-n)?0:n)&&e<r.nc&&0<=t&&t<r.nr?Dn(Q.min(r.nr-t,r.nc-e),function(n){return r.val[t+n][e+n]}):null},entry:function(n,t,e){var r=this,i=r.nr,u=r.nc;return n<0&&(n+=i),t<0&&(t+=u),0<=n&&n<i&&0<=t&&t<u?null!=e?(e=r.ring.cast(e),r.val[n][t].equ(e)||(r._n&&r===r._n._n&&(r._n._n=null),r._t&&r===r._t._t&&(r._t._t=null),r._h&&r===r._h._h&&(r._h._h=null),r._i&&r===r._i._i&&(r._i._i=null),r._gi&&r===r._gi._gi&&(r._gi._gi=null),r._str=null,r._tex=null,r._n=null,r._t=null,r._h=null,r._a=null,r._i=null,r._gi=null,r._p=null,r._snf=null,r._lu=null,r._qr=null,r._ldl=null,r._ref=null,r._rref=null,r._rf=null,r._evd=null,r._svd=null,r._rn=null,r._ln=null,r._rs=null,r._cs=null,r._tr=null,r._det=null,r.val[n][t]=e),r):r.val[n][t]:null==e?null:r},isSquare:function(){return this.nr===this.nc},isScalar:function(){return 1===this.nr&&1===this.nc},isInt:function(){var n,t,e=this.nr,r=this.nc;if(Cn(this.ring.NumberClass,Z))return!0;for(n=0;n<e;n++)for(t=0;t<r;t++)if(!this.val[n][t].isInt())return!1;return!0},isReal:function(){var n,t,e=this.nr,r=this.nc;if(!Cn(this.ring.NumberClass,v))return!0;for(n=0;n<e;n++)for(t=0;t<r;t++)if(!this.val[n][t].isReal())return!1;return!0},isImag:function(){var n,t,e=this.nr,r=this.nc;if(!Cn(this.ring.NumberClass,v))return!1;for(n=0;n<e;n++)for(t=0;t<r;t++)if(!this.val[n][t].isImag())return!1;return!0},equ:function(n,t){var e,r,i=this.nr,u=this.nc;if(Nn(n,E)){if(i!==n.nr||u!==n.nc)return!1;for(e=0;e<i;e++)for(r=0;r<u;r++)if(!this.val[e][r].equ(n.val[e][r]))return!1;return!0}if(!0!==t)return 1===i&&1===u&&this.val[0][0].equ(n);for(e=0;e<i;e++)for(r=0;r<u;r++)if(!this.val[e][r].equ(n))return!1;return!0},gt:function(n){return 1===this.nr&&1===this.nc&&this.val[0][0].gt(n)},gte:function(n){return 1===this.nr&&1===this.nc&&this.val[0][0].gte(n)},lt:function(n){return 1===this.nr&&1===this.nc&&this.val[0][0].lt(n)},lte:function(n){return 1===this.nr&&1===this.nc&&this.val[0][0].lte(n)},real:function(){return Cn(this.ring.NumberClass,v)?this.map(function(n){return n.real()}):this},imag:function(){var n=this.ring;return Cn(n.NumberClass,v)?this.map(function(n){return n.imag()}):E.Zero(n,this.nr,this.nc)},neg:function(){return null==this._n&&(this._n=this.map(function(n){return n.neg()}),this._n._n=this),this._n},t:function(){var n=this;return null==n._t&&(n._t=E(n.ring,E.T(n.val)),(n._t._t=n)._t._tr=n._tr,n._t._det=n._det),n._t},h:function(){var n,e,t,r=this;return r.ring.NumberClass!==v?r.t():(null==r._h&&(n=r.ring,e=r.nr,t=r.nc,r._h=E(n,Dn(t,function(t){return Dn(e,function(n){return r.val[n][t].conj()})})),r._h._h=r),r._h)},inv:function(){var n,t,e,r,i,u=this;return null==u._i&&((n=u.nr)!==(t=u.nc)?u._i=!1:(e=u.ring,(i=u.rref(!0))[0].val[n-1][t-1].equ(e.Zero())?u._i=!1:(r=e.associatedField(),u._i=E(r,i[3].map(function(n,t){return r.cast(n).div(r.cast(i[0].val[t[0]][t[0]]))},!0)),u._i._i=e.isField()?u:E(r,u)))),u._i},ginv:function(){var n,e,t,r,i,u,l=this;return null==l._gi&&(u=l.nr,t=l.nc,n=l.ring,e=n.associatedField(),l.equ(n.Zero(),!0)?l._gi=l.t():1===u&&1===t?l._gi=E(e,[[e.cast(l.val[0][0]).inv()]]):1===u||1===t?(i=e.cast(l.array().reduce(function(n,t){return n.add(t.mul(t.conj()))},n.Zero())),l._gi=E(e,l.h().map(function(n,t){return e.cast(n).div(i)},!0))):(r=l.rank())===t?l._gi=u===t?l.inv():l.h().mul(l).inv().mul(l.h()):r===u?l._gi=l.h().mul(l.mul(l.h()).inv()):(u=l.rankf(),i=u[0],u=u[1],l._gi=u.h().mul(u.mul(u.h()).inv()).mul(i.h().mul(i).inv().mul(i.h()))),l._gi._gi=n.isField()?l:E(e,l)),l._gi},minor:function(n,e,t){var r=this,i=r.nr,u=r.nc,l=r.ring;return i!==u?null:i<=1?l.Zero():(e=+(e||0),(n=+(n||0))<0||i<=n||e<0||u<=e?null:(i=E(l,Dn(i-1,function(t){return n<=t&&t++,Dn(u-1,function(n){return e<=n&&n++,r.val[t][n]})})).det(),!0===t&&n+e&1&&(i=i.neg()),i))},adj:function(){var n,t,e,r=this;return null==r._a&&(n=r.nr,t=r.nc,n!==t?r._a=!1:(e=r.ring,r._a=E(e,Dn(t,function(t){return Dn(n,function(n){return r.minor(n,t,!0)})})))),r._a},charpoly:function(n){var t,e,r,i,u,l=this.nr;if(l!==this.nc)return null;if(null==this._p){for(n=String(n||"x"),t=this.ring,r=l,u=new Array(r+1),i=E(t,r,r),u[r]=t.One(),e=1;e<=r;e++)i=this.mul(i).map(function(n,t){return t[0]===t[1]?n.add(u[r-e+1]):n}),u[r-e]=this.mul(i).tr().div(-e);this._p=t.PolynomialClass?I(u.map(function(n){return R(n)}),n,t.CoefficientRing):I(u,n,t)}return this._p},add:function(e){var r=this;return Nn(e,E)?E(r.ring,Dn(Q.max(r.nr,e.nr),function(t){return t>=e.nr?r.val[t].slice():t>=r.nr?e.val[t].slice():Dn(Q.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])})})):((wn(e)||On(e))&&(e=r.ring.cast(e)),r.map(function(n){return n.add(e)}))},sub:function(e){var r=this;return Nn(e,E)?E(r.ring,Dn(Q.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)}):Dn(Q.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])})})):((wn(e)||On(e))&&(e=r.ring.cast(e)),r.map(function(n){return n.sub(e)}))},mul:function(i){var u,l,s=this;return Nn(i,E)?(u=Q.min(s.nc,i.nr),l=s.ring.Zero(),E(s.ring,Dn(s.nr,function(r){return Dn(i.nc,function(n){for(var t=l,e=0;e<u;e++)t=t.add(s.val[r][e].mul(i.val[e][n]));return t})}))):((wn(i)||On(i))&&(i=s.ring.cast(i)),s.map(function(n){return n.mul(i)}))},dot:function(e){var r=this;return Nn(e,E)?E(r.ring,Dn(Q.max(r.nr,e.nr),function(t){return t>=r.nr?e.val[t].slice():t>=e.nr?r.val[t].slice():Dn(Q.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])})})):((wn(e)||On(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 Nn(i,E)?(e=s.nr,n=s.nc,t=i.nr,u=i.nc,e=e*t,l=n*u,E(s.ring,Dn(e,function(n){var e=~~(n/t),r=n%t;return Dn(l,function(n){var t=~~(n/u),n=n%u;return s.val[e][t].mul(i.val[r][n])})}))):((wn(i)||On(i))&&(i=s.ring.cast(i)),s.map(function(n){return n.mul(i)}))},div:function(t){return Nn(t,f)||J.Arithmetic.isNumber(t)||On(t)?((wn(t)||On(t))&&(t=this.ring.cast(t)),this.map(function(n){return n.div(t)})):this},mod:function(t){return Nn(t,f)||J.Arithmetic.isNumber(t)||On(t)?((wn(t)||On(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=J.Arithmetic;if((n=Z.cast(n)).lt(r.O)||n.gt(un))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(Nn(n,E)&&(n=n.col(0)),Nn(t,E)&&(t=t.diag()),n=m.cast(n),t=t&&m.cast(t),u=Q.min(this.nr,this.nc,n.length),l=new Array(u),e=0;e<u;e++){for(i=c,r=0;r<e;r++)i=i.add(f[e][r].mul(l[r]));if(s=n[e].sub(i),(o=f[e][e]).equ(c)){if(!s.equ(c))return null}else if(t)s=s.mul(t[e].div(o));else{if(!o.divides(s))return null;s=s.div(o)}l[e]=s}return l},backsub:function(n,t){var e,r,i,u,l,s,o,m=this.ring,c=m.Zero(),f=this.val;for(Nn(n,E)&&(n=n.col(0)),Nn(t,E)&&(t=t.diag()),n=m.cast(n),t=t&&m.cast(t),u=Q.min(this.nr,this.nc,n.length),l=new Array(u),e=u-1;0<=e;e--){for(i=c,r=u-1;e<r;r--)i=i.add(f[e][r].mul(l[r]));if(s=n[e].sub(i),(o=f[e][e]).equ(c)){if(!s.equ(c))return null}else if(t)s=s.mul(t[e].div(o));else{if(!o.divides(s))return null;s=s.div(o)}l[e]=s}return l},backsuby:function(n){var t,e,r,i,u,l,s,o=this.ring,m=o.Zero(),c=this.val;for(Nn(n,E)&&(n=n.col(0)),n=o.cast(n),i=Q.min(this.nr,this.nc,n.length),u=new Array(i),t=i-1;0<=t;t--){for(r=m,e=i-1;t<e;e--)r=r.add(c[t][e].mul(u[e]));if(l=c[i-1][i-1].mul(n[t]).sub(r),!(s=c[t][t]).divides(l))return null;l=l.div(s),u[t]=l}return u},snf:function(){var n,t,e,r,i,u,l,s,o,m,c,f,a,h,d,g,_,v,b,p,y,x,q,A,I,O,w,S=this;if(null==S._snf)if((n=S.ring).hasGCD()){for(t=n.Zero(),e=n.One(),r=n.MinusOne(),i=S.nr,u=S.nc,l=Q.min(i,u),s=S.clone(),o=E.I(n,i),m=E.I(n,u),c=-1,f=0;f<i;f++){for(_=!1,a=c+1;a<u;a++){for(b=0;b<i&&s.val[b][a].equ(t);b++);if(b<i){_=!0;break}}if(!_)break;if(s.val[f][a].equ(t)){for(d=0;d<i&&s.val[d][a].equ(t);d++);E.MULR(n,s.val,f,d,t,e,e,t),E.MULC(n,o.val,f,d,t,e,e,t)}for(E.MULC(n,s.val,a,f,t,e,e,t),E.MULR(n,m.val,a,f,t,e,e,t),a=f,h=!0;h;){for(h=!1,d=f+1;d<i;d++)s.val[d][a].equ(t)||(h=!0,s.val[f][a].divides(s.val[d][a])||(y=(p=n.xgcd(s.val[f][a],s.val[d][a]))[1],x=p[2],q=s.val[d][a].div(p[0]),A=s.val[f][a].div(p[0]),E.MULR(n,s.val,f,d,y,x,q.neg(),A),E.MULC(n,o.val,f,d,A,x.neg(),q,y)),I=s.val[d][a].div(s.val[f][a]),E.MULR(n,s.val,f,d,e,t,I.neg(),e),E.MULC(n,o.val,f,d,e,t,I,e));for(g=a+1;g<u;g++)s.val[f][g].equ(t)||(h=!0,s.val[f][a].divides(s.val[f][g])||(y=(p=n.xgcd(s.val[f][a],s.val[f][g]))[1],x=p[2],q=s.val[f][g].div(p[0]),A=s.val[f][a].div(p[0]),E.MULC(n,s.val,a,g,y,q.neg(),x,A),E.MULR(n,m.val,a,g,A,q,x.neg(),y)),I=s.val[f][g].div(s.val[f][a]),E.MULC(n,s.val,a,g,e,I.neg(),t,e),E.MULR(n,m.val,a,g,e,I,t,e))}c=a}for(v=0;v<l;v++)for(b=v-1;0<=b;b--)(p=n.xgcd(s.val[b][b],s.val[v][v]))[0].equ(t)||(y=p[1],x=p[2],q=s.val[v][v].div(p[0]),A=s.val[b][b].div(p[0]),O=x.mul(q),w=e.sub(y.mul(A)),E.MULR(n,s.val,b,v,e,x,q,O.sub(e)),E.MULC(n,o.val,b,v,e.sub(O),x,q,r),E.MULC(n,s.val,b,v,y,w,e,A.neg()),E.MULR(n,m.val,b,v,A,w,e,y.neg()));S._snf=[s,o,m]}else S._snf=!1;return S._snf?S._snf.slice():S._snf},evd:function(){this.ring,this.nr,this.nc;return null},svd:function(){this.ring,this.nr,this.nc;return null},lu:function(){var n,t,e,r,i,u,l,s,o,m,c,f,a,h,d,g,_,v,b=this;if(null==b._lu){for(n=b.ring,t=n.Zero(),e=n.One(),n.MinusOne(),r=b.nr,i=b.nc,v=!1,s=b.clone(),l=E.I(n,r),o=Dn(r,function(){return t}),u=E.I(n,r),m=e,c=0;c<r-1;c++){if(s.val[c][c].equ(t)){for(h=c+1,d=!0;h<r&&d;)s.val[h][c].equ(t)?h++:d=!1;if(r<=h){v=!0;break}E.SWAPR(s.val,c,h),E.SWAPR(u.val,c,h)}for(g=s.val[c][c],l.val[c][c]=g,o[c]=m.mul(g),f=c+1;f<r;f++){for(_=s.val[f][c],l.val[f][c]=_,a=c+1;a<i;a++)s.val[f][a]=g.mul(s.val[f][a]).sub(s.val[c][a].mul(_)).div(m);s.val[f][c]=t}m=s.val[c][c]}v?b._lu=!1:(o[r-1]=m,b._lu=[u,l,E.D(n,r,r,o),s])}return b._lu?b._lu.slice():b._lu},qr:function(){var n,t,e=this;return null==e._qr&&(e.nr,n=e.nc,t=e.t().mul(e).concat(e.t()).lu(),e._qr=!!t&&[t[3].slice(0,n,-1,-1).t(),t[2],t[1].t()]),e._qr?e._qr.slice():e._qr},ldl:function(){var n,t,e,r,i,u,l,s,o,m,c=this;if(null==c._ldl)if((n=c.nr)===c.nc&&c.equ(c.h())){for(e=(t=c.ring).associatedField(),s=t.isField()?c:E(e,c),o=E.Zero(e,n,n),m=E.I(e,n),r=0;r<n;r++){for(i=0;i<r;i++){for(u=0,l=e.Zero();u<i;u++)l=l.add(m.val[r][u].mul(m.val[i][u].conj()).mul(o.val[u][u]));m.val[r][i]=s.val[r][i].sub(l).div(o.val[i][i])}for(u=0,l=e.Zero();u<r;u++)l=l.add(m.val[r][u].mul(m.val[r][u].conj()).mul(o.val[u][u]));if(o.val[r][r]=s.val[r][r].sub(l),o.val[r][r].lte(0)){c._ldl=!1;break}}!1!==c._ldl&&(c._ldl=[m,o])}else c._ldl=!1;return c._ldl?c._ldl.slice():c._ldl},ref:function(n,t){var e,r,i,u,l,s,o,m,c,f,a,h,d,g,_,v,b,p,y,x,q,A=0;if(null==this._ref){for(r=(e=this.ring).Zero(),i=e.One(),u=e.MinusOne(),l=this.nr,o=s=this.nc,qn(t)&&(o=Q.min(o,t[1])),x=this.concat(E.I(e,l)).val,m=new Array(o),c=i,q=function(n,t){t=t||0;for(var e=A-1;0<=e;e--)if(n===m[e][t])return e;return-1},f=g=0;f<l&&!(o<=g);f++){for(a=f;x[a][g].equ(r);)if(l<=++a&&(a=f,o<=++g)){g=-1;break}if(-1===g)break;for(_=-1,b=null,y=0,a=h=a;a<l;a++)(p=x[a][g].abs()).equ(r)?y++:null!=b&&!p.lt(b)||(b=p,_=a);for(;;){if(-1===_)break;if(l-h===y+1){for(f!==_&&(E.SWAPR(x,f,_),c=c.neg()),x[f][g].lt(r)&&(E.ADDR(e,x,f,f,r,u,g),c=c.mul(u)),a=_,h=f;0<=a&&-1!==(d=q(a));)a=h-=A-d;m[A++]=[a,g],c=f<o?c.mul(x[f][f]):r;break}for(y=0,v=_,a=h;a<l;a++)a!==v&&(E.ADDR(e,x,a,v,x[a][g].div(x[v][g]).neg(),i,g),(p=x[a][g].abs()).equ(r)?y++:p.lt(b)&&(b=p,_=a))}g++}A<o&&(c=r),t=(x=new E(e,x)).slice(0,s,l-1,l+s-1),x=x.slice(0,0,l-1,s-1),m.length>A&&(m.length=A),this._ref=[x,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,qn(t)&&(v=Q.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<m;f++)for(c=o[f][1],a=0;a<f;a++)if(!g.val[a][c].equ(r)&&(E.ADDR(e,g.val,a,f,g.val[a][c].neg(),g.val[f][c]),g.val[a][o[a][1]].lt(r)&&E.ADDR(e,g.val,a,a,r,u,o[a][1]),e.hasGCD()&&!r.equ(_=e.gcd(g.val[a]))&&!i.equ(_)))for(h=0,d=g.val[a].length;h<d;h++)g.val[a][h]=g.val[a][h].div(_);v=g.slice(0,s,l-1,l+s-1),g=g.slice(0,0,l-1,s-1),this._rref=[g,o,t,v]}return n?this._rref.slice():this._rref[0]},rankf:function(){var n,i,u,l,t,e,r;return null==this._rf&&(r=this.nr,u=this.nc,n=this.ring,l=this.rref(!0),e=(t=l[1]).length,i=n.associatedField(),r=E(i,this.slice(Dn(r,0,1),Dn(e,function(n){return t[n][1]}))),e=E(i,l[0].slice(0,0,e-1,u-1).map(function(n,t){for(var e=t[0],r=e;r+1<u&&l[0].val[e][r].equ(0);)r++;return i.cast(n).div(i.cast(l[0].val[e][r]))})),this._rf=[r,e]),this._rf.slice()},rank:function(){return this.ref(!0)[1].length},tr:function(){var n,t,e;if(null==this._tr)for(n=this.ring,t=Q.min(this.nr,this.nc),this._tr=n.Zero(),e=0;e<t;e++)this._tr=this._tr.add(this.val[e][e]);return this._tr},det:function(){var n;return null==this._det&&(n=this.ring,this.nr!==this.nc?this._det=n.Zero():(n=this.ref(!0),this._det=n[2])),this._det},rowspace:function(){var t,n,e=this;return null==e._rs&&(t=e.ring,n=e.ref(!0),e._rs=n[1].map(function(n){return E(t,[e.row(n[0])])})),e._rs.slice()},colspace:function(){var t,n,e=this;return null==e._cs&&(t=e.ring,n=e.ref(!0),e._cs=n[1].map(function(n){return E(t,e.col(n[1]))})),e._cs.slice()},nullspace:function(n){var u,l,s,o,m,c,f,a,t=this;return n?(null==t._ln&&(t._ln=t.t().nullspace().map(function(n){return n.t()})),t._ln.slice()):(null==t._rn&&(u=t.ring,l=u.Zero(),s=u.One(),o=t.nc,n=t.rref(!0),m=n[0],c=n[1],f=c.length,n=_e(o,c.map(function(n){return n[1]})),a=f?u.hasGCD()?u.lcm(c.map(function(n,t){return m.val[t][n[1]]})):En(function(n,t,e){return n.mul(m.val[e][t[1]])},s,c):s,t._rn=n.map(function(t){for(var n,e,r=Dn(o,function(n){return n===t?a:l}),i=0;i<f;i++)(e=c[i][1])<=t&&(r[e]=r[e].sub(a.div(m.val[i][e]).mul(m.val[i][t])));if(u.hasGCD()&&s.lt(n=u.gcd(r)))for(e=0;e<o;e++)r[e]=r[e].div(n);return E(u,r)})),t._rn.slice())},slice:function(e,r,n,i){var u=this,t=u.ring,l=u.nr,s=u.nc;return l&&s?qn(e)&&qn(r)?(e=e.filter(function(n){return 0<=n&&n<l}),r=r.filter(function(n){return 0<=n&&n<s}),E(t,Dn(e.length,function(t){return Dn(r.length,function(n){return u.val[e[t]][r[n]]})}))):(null==e&&(e=0),null==r&&(r=0),null==n&&(n=l-1),null==i&&(i=s-1),e<0&&(e+=l),r<0&&(r+=s),n<0&&(n+=l),i<0&&(i+=s),e=Q.max(0,Q.min(l-1,e)),n=Q.max(0,Q.min(l-1,n)),r=Q.max(0,Q.min(s-1,r)),i=Q.max(0,Q.min(s-1,i)),e<=n&&r<=i?E(t,Dn(n-e+1,function(t){return Dn(i-r+1,function(n){return u.val[e+t][r+n]})})):E(t)):E(t)},concat:function(e,n){var r=this,t=r.ring,i=t.Zero();return Nn(e,E)?E(t,"vertical"===(n=n||"horizontal")?Dn(r.nr+e.nr,function(t){return Dn(Q.max(r.nc,e.nc),function(n){return n>=r.nc?t<r.nr?i:e.val[t-r.nr][n]:n>=e.nc?t<r.nr?r.val[t][n]:i:(t<r.nr?r.val[t]:e.val[t-r.nr])[n]})}):Dn(Q.max(r.nr,e.nr),function(t){return Dn(r.nc+e.nc,function(n){return t>=r.nr?n<r.nc?i:e.val[t][n-r.nc]:t>=e.nr?n<r.nc?r.val[t][n]:i:n<r.nc?r.val[t][n]:e.val[t][n-r.nc]})})):r},valueOf:function(n,t){var e=this.ring;return t=+(t||0),(0<=(n=+(n||0))&&n<this.nr&&0<=t&&t<this.nc?this.val[n][t]:e.Zero()).valueOf()},toString:function(){return null==this._str&&(this._str=E.toString(this.val)),this._str},toTex:function(){return null==this._tex&&(this._tex=E.toTex(this.val)),this._tex},toDec:function(n){return E.toDec(this.val,n)}}),$e.LEX=$e.LEXICOGRAPHIC=dn,$e.COLEX=$e.COLEXICOGRAPHIC=gn,$e.MINIMAL=$e.GRAY=_n,$e.RANDOM=vn,$e.REV=$e.ANTI=$e.REVERSE=$e.REVERSED=an,$e.REF=$e.REFLECT=$e.REFLECTED=hn,$e.REVLEX=$e.ANTILEX=$e.REVERSELEXICOGRAPHIC=$e.ANTILEXICOGRAPHIC=dn|an,$e.REFLEX=$e.REFLECTEDLEXICOGRAPHIC=dn|hn,$e.REVCOLEX=$e.ANTICOLEX=$e.REVERSECOLEXICOGRAPHIC=$e.ANTICOLEXICOGRAPHIC=gn|an,$e.REFCOLEX=$e.REFLECTEDCOLEXICOGRAPHIC=gn|hn,J.ORDER=$e,u=J.Filter=n({constructor:function n(t){if(!Nn(this,n))return new n(t);this.filter=t||null},__static__:{UNIQUE:function(){return u(function(n){for(var t=n.length,e={},r=0;r<t;r++){if(1===e[n[r]])return!1;e[n[r]]=1}return!0})},SORTED:function(n,i){return(arguments.length<2||null==i)&&(i=!0),On(n)&&("<"===n?(n=1,i=!0):">"===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<r;e++){if(i&&t<=n[e]||!i&&t<n[e])return!1;t=n[e]}return!0}:function(n){for(var t=n[0],e=1,r=n.length;e<r;e++){if(i&&t>=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<t}:"<="===n?function(n){return n.length<=t}:"!="===n?function(n){return n.length!==t}:function(n){return n.length===t})},VAL:function(t,e,n){return t=+t,u(">="===(n=n||"==")||"=>"===n?function(n){return 0<=t&&t<n.length&&n[t]>=e}:">"===n?function(n){return 0<=t&&t<n.length&&n[t]>e}:"<"===n?function(n){return 0<=t&&t<n.length&&n[t]<e}:"<="===n||"=<"===n?function(n){return 0<=t&&t<n.length&&n[t]<=e}:"!="===n?function(n){return 0<=t&&t<n.length&&n[t]!==e}:function(n){return 0<=t&&t<n.length&&n[t]===e})},MAX:function(n,t){return n=+n,u(">="===(t=t||"==")||"=>"===t?function(e){return En(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)>=n}:">"===t?function(e){return En(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)>n}:"<"===t?function(e){return En(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)<n}:"<="===t||"=<"===t?function(e){return En(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)<=n}:"!="===t?function(e){return En(function(n,t){return e[t]>n&&(n=e[t]),n},-1/0,null,0,e.length-1,1)!==n}:function(e){return En(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 En(function(n,t){return e[t]<n&&(n=e[t]),n},1/0,null,0,e.length-1,1)>=n}:">"===t?function(e){return En(function(n,t){return e[t]<n&&(n=e[t]),n},1/0,null,0,e.length-1,1)>n}:"<"===t?function(e){return En(function(n,t){return e[t]<n&&(n=e[t]),n},1/0,null,0,e.length-1,1)<n}:"<="===t||"=<"===t?function(e){return En(function(n,t){return e[t]<n&&(n=e[t]),n},1/0,null,0,e.length-1,1)<=n}:"!="===t?function(e){return En(function(n,t){return e[t]<n&&(n=e[t]),n},1/0,null,0,e.length-1,1)!==n}:function(e){return En(function(n,t){return e[t]<n&&(n=e[t]),n},1/0,null,0,e.length-1,1)===n})},BETWEEN:function(r,i,n){var t;return(i=+i)<(r=+r)&&(t=r,r=i,i=t),(arguments.length<3||null==n)&&(n=!0),u(n?function(n){for(var t=0,e=n.length;t<e;t++)if(n[t]<r||n[t]>i)return!1;return!0}:function(n){for(var t=0,e=n.length;t<e;t++)if(n[t]<=r||n[t]>=i)return!1;return!0})}},filter:null,dispose:function(){return this.filter=null,this},apply:function(n,t){var e=this.filter;return!e||!Sn(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 Sn(t)||Nn(t,u)?(Nn(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 Sn(e)||Nn(e,u)?(Nn(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 Sn(t)||Nn(t,u)?(Nn(t,u)||(t=u(t)),u(function(n){return e.apply(n,this)&&t.apply(n,this)})):e}}),D=J.Iterator=n({constructor:function n(t,e){var r=this,i=J.Arithmetic;if(!Nn(r,n))return new n(t,e);(qn(t)||An(t))&&(Nn(t[0],n)||Nn(t[t.length-1],n))?(r.name="Sequence",r.$=e||{},r.$.seq=G.call(t),r.$.count=En(function(n,t){return i.add(n,t.total())},i.O,r.$.seq),r.rewind()):qn(t)||An(t)?(r.name="List",r.$=e||{},r.$.seq=G.call(t),r.$.count=r.$.seq.length,r.rewind()):Sn(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(!Nn(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&&(En(function(n,t){t instanceof D&&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):(Nn(n,u)||Sn(n))&&(t.filter=Nn(n,u)?n:u(n)),this},mapTo:function(n,t){var e,r,i,u=this.$;return!1===n?u.output&&(u.output=null):Sn(n)&&(e=u.output,u.output=t&&e?(r=e,i=n,function(n){return null==n?null:i(r(n))}):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()):Nn(t,D)&&Sn(n)&&(r.sub=t,r.submethod=n,r.subcascade=-1===e?-1:1,r.subcount=J.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:Sn(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,qn(l.seq)){for(e=0,r=l.seq.length;e<r;e++)l.seq[e]instanceof D&&l.seq[e].rewind(n);for(l.seqindex=n<0?r-1:0;i=0<=l.seqindex&&l.seqindex<r?"List"===u.name?l.seq[l.seqindex]:l.seq[l.seqindex].next(n):null,0<=l.seqindex&&l.seqindex<r&&("List"===u.name||null==i)&&(l.seqindex+=n),null==i&&0<=l.seqindex&&l.seqindex<l.seq.length;);u.__item=i,u._item=u.output(u.__item),l.sub&&!0!==t&&(l.sub.rewind(n),u.__subitem=l.sub.next(n),u._subitem=null!=u._item&&null!=u.__subitem?u.fusion(u._item,u.__subitem):null)}else Sn(l.generator)&&(u.__item=l.generator.call(u,null,n,l.state,!0),u._item=u.output(u.__item),l.sub&&!0!==t&&(l.sub.rewind(n),u.__subitem=l.sub.next(n),u._subitem=null!=u._item&&null!=u.__subitem?u.fusion(u._item,u.__subitem):null));return u},total:function(n){var t=this.$;return(t.sub&&!n?t.subcount:t.count)||J.Arithmetic.O},index:function(n){return arguments.length?(this._index=n,this):this._index},item:function(n){return arguments.length?(this._item=n,this):this._item},hasNext:function(n){return this.$.sub?null!=this._subitem:null!=this.__item},next:function(n){var t,e,r,i=this,u=i.$;if(n=-1===n?-1:1,qn(u.seq)){do{for(t=i.__item,e=u.sub?i._subitem:i._item,r=null;null==r&&0<=u.seqindex&&u.seqindex<u.seq.length;)r="List"===i.name?u.seq[u.seqindex]:u.seq[u.seqindex].hasNext(n)?u.seq[u.seqindex].next(n):null,"List"!==i.name&&null!=r||(u.seqindex+=n);null==r&&(u.seqindex<0||u.seqindex>=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(Sn(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(Sn(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<n)&&this.hasNext()&&null!=(t=this.next());)r.push(t);return r},storeState:function(n){return null},resumeState:function(n){return this},__iter__:function(){return new D.Iterable(this)}}),"undefined"!=typeof Symbol&&void 0!==Symbol.iterator&&(D[F][Symbol.iterator]=D[F].__iter__),T=J.CombinatorialIterator=n(D,{constructor:function n(t,e,r,i){var u,l,s,o,m=this;J.Arithmetic;if(!Nn(m,n))return new n(t,e,r,i);m[X],(qn(t)||An(t))&&(Nn(t[0],n)||Nn(t[t.length-1],n))?((r=e||{}).seq=An(t)?G.call(t):t,t=null,m.n=e=r.seq.length,r.type="sequence",r.rand=r.rand||{},u=(r.rand.sequence=1)/0,s=1/0,o=l=-1/0,En(function(n,t){var e=t.base(!0,"min"),r=t.base(!0,"max"),i=t.dimension(!0,"min"),t=t.dimension(!0,"max");l<r&&(l=bax),e<u&&(u=e),o<t&&(o=t),i<s&&(s=i)},null,r.seq),r.base=r.maxbase=l,r.minbase=u,r.dimension=r.maxdimension=o,r.mindimension=s):(m.n=e||0,r=r||{}),t=t||"CombinatorialIterator",r.type=String(r.type||"default").toLowerCase(),r.order=r.order||dn,r.rand=r.rand||{},r.sub=null,r.instance=m,D.call(m,t,r),m.init().order(r.order),i&&Nn(i.iter,n)&&(i.method=i.method||"project",Sn(i.method)?m.fuse(i.method,i.iter,i.cascade):On(i.method)&&-1!==["multiply","add","concat","connect","join","combine","complete","interleave","juxtapose","intersperse","project"].indexOf(i.method)&&m["project"===i.method?"projectOn":i.method+"With"](i.iter,i.pos,i.cascade)),r.filter&&m.filterBy(r.filter)},__static__:{C:function(n,t,e,r){var i=-1===r;return e+1===n.length?(r=qn(n[e])?n[e][0]:n[e],Pn(n,n,t,i?e-(r||1):0,i?e-1:r-1)):Pn(n,n,t),n},D:function(n,t,e,r){var i,u=-1===r;return e+1===n.length?(r=qn(i=n[e])?i[0]:i,(r=(n=_e(t,n=u?n.slice(e-r,e):n.slice(0,r),!0)).length)<e&&n[u?"unshift":"push"].apply(n,new Array(e-r)),qn(i)?i[0]=r:i=r,n.push(i)):n=_e(t,n),n},P:function(n,t,e){var r;return t+1===n.length?(r=qn(n[t])?n[t][0]:n[t],n=-1===e?Qn(n,kn(n,n,0,t-(r||1),t-1),-t+r,t-(r||1),t-1):Qn(n,kn(n,n,0,0,r-1),t-r,0,r-1)):kn(n,n),n},T:function(n,t,e){return $n(n,t)},DUAL:function(n,t,e,r){if(null==n)return null;if(e&&"sequence"===e.type)return n;var i=e&&null!=e.order?e.order:dn,u=e&&null!=e.base?e.base:t,t=e&&null!=e.dimension?e.dimension:t;return r=-1===r?-1:1,n=gn&i?hn&i?this.C(n,u,t,e,r):this.P(this.C(n,u,t,e,r),t,r):hn&i?this.P(n,t,r):n},count:function(n,t){var e=J.Arithmetic,r=e.O;return t&&"sequence"===t.type&&t.seq&&t.seq.length?En(function(n,t){return e.add(n,t.total())},r,t.seq):r},initial:function(n,t,e,r){return t&&"sequence"===t.type&&t.seq&&t.seq.length?!0===r?this.succ(0,0,n,t,e):((e=-1===e?-1:1)<0||an&(t&&null!=t.order?t.order:dn)?t.seq[t.seq.length-1]:t.seq[0]).item0(e):null},succ:function(n,t,e,r,i,u){if(null==e||null==n)return null;var l,s,o,m,c=J.Arithmetic;if(i=-1===i?-1:1,r&&"sequence"===r.type){if(!(m=r.seq)||!m.length)return null;for(n=an&(r&&null!=r.order?r.order:dn)?(l=-1,m.length-1):(l=1,0),o=l*r.seq_curr+n,s=l*i;0<=o&&o<m.length&&!m[o].hasNext(i);)r.seq_curr+=i,o+=s;return 0<=o&&o<m.length?m[o].next(i):null}return null==t?null:this.unrank(c.add(t,i<0?c.J:c.I),e,r)},rand:function(n,t){var e,r,i,u,l,s,o=J.Arithmetic,m=o.O;if(t&&"sequence"===t.type){if(!(i=t.seq)||!i.length)return null;for(e=null!=t.last?t.last:o.sub(this.count(n,t),o.I),r=o.rnd(m,e),u=0,l=i.length;o.gte(r,s=i[u].total())&&(r=o.sub(r,s),!(l<=++u||o.lt(r,m))););return u<l&&o.gte(r,m)?i[u].random():null}return e=t&&null!=t.last?t.last:o.sub(this.count(n,t),o.I),r=o.rnd(m,e),o.equ(m,r)?this.initial(n,t,1):o.equ(e,r)?this.initial(n,t,-1):this.unrank(r,n,t)},rank:function(n,t,e){if(e&&"sequence"===e.type){var r,i,u,l,s,o,m,c=J.Arithmetic,f=c.O,a=c.J,h=e.seq;if(null==n||!h||!h.length)return a;for(i=h.length,r=0,s=f,u=n.length,m=!1,r=0;r<i;r++)if(u===(o=h[r]).dimension()||u>=o.$.mindimension&&u<=o.$.maxdimension){if(l=o[X].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 yn()},unrank:function(n,t,e){if(e&&"sequence"===e.type){var r,i,u=J.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 r<i&&u.gte(n,l)?s[r][X].unrank(n,s[r].n,s[r].$):null}return yn()},connect:function(n,e,r,t,i,u){if("multiply"===n)return fe(!0,e,r);if("intersperse"===n){for(var l=r.slice(),s=e.length,o=0;o<s;o++)l.splice(l.length-e[o],0,(u&&u.length&&o<u.length?u:e)[o]);return l}if("juxtapose"===n)return r&&qn(r[0])?[e].concat(r):[e,r];if("add"===n||"connect"===n||"concat"===n){var m=e.length?e[0]+1:0;return Dn(e.length+r.length,"add"===n?function(n){return n<e.length?e[n]:e.length+r[n-e.length]}:"connect"===n?function(n){return n<e.length?(e[n]+1>m&&(m=e[n]+1),e[n]):m+r[n-e.length]}:function(n){return n<e.length?e[n]:r[n-e.length]})}if("complete"!==n&&"interleave"!==n&&"join"!==n&&"combine"!==n)return Dn(e.length,function(n){return 0<=e[n]&&e[n]<r.length?r[e[n]]:e[n]});var c=e.length,f=r.length,a=c+f,h=0,d=0,g=(p=0)<c?e[p]:-1,_=null!=u?p<u.length?u[p]:-1:g,v="complete"===n?_e(i,e,!0):null;if("combine"!==n)return Dn(a,"complete"===n?function(n){var t;return _===n?(t=g,g=++p<c?e[p]:-1,_=null!=u?p<u.length?u[p]:-1:g):t=v[r[h++]],t}:"interleave"===n?function(n){var t;return _===n?(t=g,g=++p<c?e[p]:-1,_=null!=u?p<u.length?u[p]:-1:g):t=r[h++],t}:function(n){var t;return g===n?(t=g,g=++p<c?e[p]:-1,d++):t=d+r[h++],t});for(var b=Dn(a,0,1),l=Dn(a),p=0;p<c;p++)l[e[p]]=b[e[p]];for(p=c-1;0<=p;p--)b.splice(e[p],1);for(h=p=0;h<f;){for(;p<a&&null!=l[p];)p++;p<a&&(l[p]=b[r[h]]),h++}return l}},name:"CombinatorialIterator",n:0,item__:null,_prev:null,_next:null,_traversed:null,dispose:function(n){var t=this;return!n&&t.$.sub&&(t.$.sub.dispose(),t.$.sub=null),"sequence"===t.$.type&&t.$.seq&&t.$.seq.length&&(En(function(n,t){t.dispose()},null,t.$.seq),t.$.seq=null),t.n=null,t.item__=null,t._prev=null,t._next=null,t._traversed&&(t._traversed.dispose(),t._traversed=null),D[F].dispose.call(t)},init:function(){var n=this[X],t=this.$,e=this.n,r=J.Arithmetic;return t.base=t.base||0,t.minbase=null!=t.minbase?t.minbase:t.base,t.maxbase=null!=t.maxbase?t.maxbase:t.base,t.dimension=Q.max(0,t.dimension||0),t.mindimension=Q.max(0,null!=t.mindimension?t.mindimension:t.dimension),t.maxdimension=Q.max(0,null!=t.maxdimension?t.maxdimension:t.dimension),t.count=n.count(e,t),t.first=r.O,t.last=r.gt(t.count,r.O)?r.sub(t.count,r.I):r.J,this},fuse:function(n,t,e,r){var i=D[F].fuse,u=this.$;return 1===arguments.length&&!1===n?(u.subpos=null,u.subbase=null,u.subminbase=null,u.submaxbase=null,u.subdimension=null,u.submindimension=null,u.submaxdimension=null,u.subposition=null,i.call(this,!1)):Nn(t,T)&&Sn(n)&&(-1!==e&&1!==e||(r=e,e=null),u.subpos=e||this.position(),u.subminbase=Q.min(u.minbase,t.base(!1,"min")),u.subbase=u.submaxbase=Q.max(u.maxbase,t.base(!1,"max")),i.call(this,n,t,r)),this},multiplyWith:function(n,t,e){var r=this.$;return Nn(n,T)&&(r.subdimension=r.dimension*n.dimension(),r.submindimension=r.mindimension*n.dimension(!1,"min"),r.submaxdimension=r.maxdimension*n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("multiply",n,t,e,r,i)},n,t,e)),this},addWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("add",n,t,e,r,i)},n,t,e)),this},connectWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("connect",n,t,e,r,i)},n,t,e)),this},concatWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("concat",n,t,e,r,i)},n,t,e)),this},juxtaposeWith:function(n,t,e){var r=this.$;return Nn(n,T)&&(r.subdimension=1+(n.$.subdimension||1),r.submindimension=1+(n.$.submindimension||1),r.submaxdimension=1+(n.$.submaxdimension||1),this.fuse(function(n,t,e,r,i){return T.connect("juxtapose",n,t,e,r,i)},n,t,e)),this},completeWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("complete",n,t,e,r,i)},n,t,e)),this},interleaveWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("interleave",n,t,e,r,i)},n,t,e)),this},joinWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("join",n,t,e,r,i)},n,t,e)),this},combineWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("combine",n,t,e,r,i)},n,t,e)),this},intersperseWith:function(n,t,e){var r=this.$;return Nn(n,T)&&0<n.dimension()&&(-1!==t&&1!==t||(e=t,t=null),t=t||(1===this.dimension()?[this.base()-1]:Dn(this.dimension(),0,1)),r.subdimension=r.dimension+n.dimension(),r.submindimension=r.mindimension+n.dimension(!1,"min"),r.submaxdimension=r.maxdimension+n.dimension(!1,"max"),this.fuse(function(n,t,e,r,i){return T.connect("intersperse",n,t,e,r,i)},n,t,e)),this},projectOn:function(n,t,e){var r=this.$;return Nn(n,T)&&(r.subdimension=r.dimension,r.submindimension=r.mindimension,r.submaxdimension=r.maxdimension,this.fuse(function(n,t,e,r,i){return T.connect("project",n,t,e,r,i)},n,t,e)),this},base:function(n,t){var e=this.$;return"min"===t?e.sub&&!n&&e.subminbase||e.minbase||0:"max"===t?e.sub&&!n&&e.submaxbase||e.maxbase||0:e.sub&&!n&&e.subbase||e.base||0},dimension:function(n,t){var e=this.$;return"min"===t?e.sub&&!n&&e.submindimension||e.mindimension||0:"max"===t?e.sub&&!n&&e.submaxdimension||e.maxdimension||0:e.sub&&!n&&e.subdimension||e.dimension||0},position:function(n){var t=this.$;return t.sub&&!n&&t.subposition||t.position||null},total:function(n){var t=this.$,e=J.Arithmetic.O;return(t.sub&&!n?t.subcount:t.count)||e},output:function(n){var t=this.n,e=this.$,r=e.output||null,e=e.type||null;return null==n?null:null==r?"sequence"===e?n:n.slice():Sn(r)?r(n,t):qn(r)?En(function(n,t,e){return n[e]=0<=t&&t<r.length?r[t]:t,n},new Array(n.length),n):On(r)?En(function(n,t,e){return n+=0<=t&&t<r.length?r.charAt(t):String(t)},"",n):"sequence"===e?n:n.slice()},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,this.dimension(),this.base(),r.subpos)):n},_reset:function(n){var t,e,r=this,i=r[X],u=r.$,l=r.n,s=J.Arithmetic,o=s.O,m=(s.I,u.order);return r.__index=r._index=o,r._item=r.__item=r.item__=null,r._prev=!1,r._next=!1,t=u.count,e=u.last,"sequence"===u.type&&(u.seq_curr=u.seq&&u.seq.length?n<0?u.seq.length-1:0:-1),vn&m?("gen"===J.Options.RANDOM||1===u.rand[u.type]||s.gt(t,J.Options.MAXMEM)||s.isDefault()&&t<0?(r.__item=i.rand(l,u),r.__index=o):(r._traversed&&r._traversed.dispose(),r._traversed=new J.BitArray(s.val(t)),t=r.random("index",!0),r._traversed.set(+t),r.__item=i.unrank(t,l,u),null!=r.__item&&(r.__index=t)),r._index=o,r._update()):(r.__item=i.initial(l,u,n,!0),null!=r.__item&&(r.__index=n<0?e:o,r._update()),r._index=r.__index),r._item=r.output(r.__item),r._prev=!(vn&m||0<n)&&null!=r.__item,r._next=!(n<0&&!(vn&m))&&null!=r.__item,r},_update:function(){return this.item__=null,this},order:function(n,t){if(!arguments.length)return this._order;var e,r,i,u,l=this,s=(l[X],J.Arithmetic),o=(s.O,s.I,!0===n),m=(l.n,l.$);if(l._traversed&&(l._traversed.dispose(),l._traversed=null),o?n=m.order:On(n)&&-1<(r=n.indexOf("|"))?(e=n.substr(r+1),n=$e(n.substr(0,r))):e=n=$e(n),t=-1===t?-1:1,m.order=n,m.sub?(o?m.sub.rewind(t):m.sub.order(e,t),l.__subindex=m.sub.index(),l.__subitem=m.sub.next(t)):(l.__subindex=null,l.__subitem=null),l._subindex=null,l._subitem=null,"sequence"===m.type&&m.seq&&m.seq.length)for(i=0,u=m.seq.length;i<u;i++)o?m.seq[i].rewind(t):m.seq[i].order(n,t);return l._reset(t),m.sub&&(l._prev=l._prev&&null!=l.__subitem,l._next=l._next&&null!=l.__subitem,l._subindex=s.add(s.mul(l.__subindex,m.count),l._index),l._subitem=l.fusion(l._item,l.__subitem)),l},index:function(n,t){t=!!t;var e=this,r=e[X],i=J.Arithmetic,u=i.O,l=(i.I,i.J),s=e.n,o=e.$,m=o.sub&&!t?o.subcount:o.count,c=o.sub&&!t?e._subindex:e._index,f=o.order;return arguments.length?(n=i.wrapR(i.num(n),m),!i.equ(n,c)&&i.inside(n,l,m)&&(m=o.count,l=o.last,o.sub&&!t&&(o.sub.index(i.div(n,m)),e.__subindex=o.sub.index(),e.__subitem=o.sub.item(),n=i.mod(n,m)),vn&f||(e.__index=n,e._index=n,e.__item=i.equ(u,n)?r.initial(s,o,1):i.equ(l,n)?r.initial(s,o,-1):r.unrank(n,s,o),e._update(),e._item=e.output(e.__item),e._prev=null!=e.__item,e._next=null!=e.__item),o.sub&&(e._prev=e._prev&&null!=e.__subitem,e._next=e._next&&null!=e.__subitem,e._subindex=i.add(i.mul(e.__subindex,m),e._index),e._subitem=e.fusion(e._item,e.__subitem))),e):n=e.$.sub?e._subindex:e._index},item0:function(n,t){n=this[X].initial(this.n,this.$,-1===n?-1:1);return!0===t?n:this.output(n)},item:function(n,t){if(!arguments.length)return this.$.sub?this._subitem:this._item;var e,r,i,u,l=this,s=l[X],o=l.n,m=l.$,c=m.sub?m.subcount:m.count,f=m.sub?l._subindex:l._index,a=J.Arithmetic,h=a.O,d=(a.I,a.J),g=null;return On(t)?-1<(u=t.indexOf("|"))?(g=t.substr(u+1),t=$e(t.substr(0,u))):g=t=$e(t):g=null!=t?t=$e(t):(t=m.order,null),m.sub||(g=null),qn(n)?(c=m.count,e=m.last,i=m.order,m.order=t,l.__item=n.slice(),l.__index=s.rank(l.__item,o,m),l._update(),l._item=l.output(l.__item),l._index=l.__index,l._prev=null!=l.__item,l._next=null!=l.__item,l):(n=a.wrapR(a.num(n),c),t===m.order&&null===g&&a.equ(n,f)?m.sub?l._subitem:l._item:a.inside(n,d,c)?(d=null,c=m.count,e=m.last,m.sub&&(d=m.sub.item(a.div(n,c),g),n=a.mod(n,c)),o=vn&t?(r=null,i=m.order,m.order=t,l.output(s.rand(o,m))):(r=n,i=m.order,m.order=t,l.output(a.equ(h,n)?s.initial(o,m,1):a.equ(e,n)?s.initial(o,m,-1):s.unrank(r,o,m))),m.order=i,m.sub&&(o=l.fusion(o,d)),o):null)},random:function(n,t,e,r){var i,u,l=this[X],s=this.$,o=s.order;if(r=!!r,"index"===n){var m,c=J.Arithmetic,f=c.num,a=c.O,n=c.I;return t===!!t&&(r=t,e=t=null),m=s.sub&&!r?(m=s.subcount,c.sub(m,n)):(m=s.count,s.last),e=null==t&&null==e?(t=a,m):null==e?(t=f(t||0),m):(t=f(t),f(e)),c.rnd(t,e)}for(;s.order|=vn,i=l.rand(this.n,s),s.order=o,i=this.output(i),u=s.sub&&!r?this.fusion(i,s.sub.random()):i,s.filter&&null!=u&&!s.filter.apply(u,this););return u},rewind:function(n){return this.order(!0,-1===n?-1:1)},hasNext:function(n){return-1===n?!(vn&this.$.order)&&this._prev:this._next},next:function(n){var t,e,r,u,s,o,m,c,f=this,a=f[X],h=J.Arithmetic,d=h.O,g=h.I,_=h.J,v=f.n,b=f.$,p=b.order,y=b.count;if((n=-1===n?-1:1)<0&&vn&p)return null;t=n<0?_:g;do{if(m=null!=(o=b.sub?f._subitem:f._item),vn&p)if(u=b.last,h.lt(f._index,u))if(e=f._traversed){for(r=f.random("index",!0),s=.5<J.Math.rnd()?_:g;e.isset(+r);)r=h.wrap(h.add(r,s),d,u);e.set(+r),f.__item=a.unrank(r,v,b),null!=f.__item&&(f.__index=r)}else f.__item=a.rand(v,b),f.__index=null;else f._item=f.__item=null,f._traversed&&(f._traversed.dispose(),f._traversed=null);else f.__item=a.succ(f.__item,f.__index,v,b,n,f.item__),null!=f.__item&&(f.__index=h.add(f.__index,t));if(c=null!=f.__item)f._index=h.add(f._index,t),null===f.__index&&(f.__index=f._index),n<0?(f._prev=c,f._next=m):(f._prev=m,f._next=c);else if(b.sub&&b.sub.hasNext(n))if(f.__subindex=b.sub.index(),f.__subitem=b.sub.next(n),null==f.__subitem)f.__subindex=null,f.__subitem=null,n<0?(f._prev=c,f._next=m):(f._prev=m,f._next=c);else{if("sequence"===b.type&&b.seq&&b.seq.length)for(i=0,l=b.seq.length;i<l;i++)b.seq[i].rewind(n);f._reset(n),c=null!=f.__item}else f.__subindex=null,f.__subitem=null,n<0?(f._prev=c,f._next=m):(f._prev=m,f._next=c);f._item=f.output(f.__item),b.sub&&(c=c&&null!=f.__subitem,f._subindex=c?h.add(h.mul(f.__subindex,y),f._index):null,f._subitem=c?f.fusion(f._item,f.__subitem):null,n<0?f._prev=c:f._next=c)}while(b.filter&&null!=o&&!b.filter.apply(o,f));return o},range:function(n,t){var e,r,i,u,l=this,s=J.Arithmetic,o=s.num,m=s.O,c=s.I,f=l.$,a=f.sub?f.subcount:f.count,h=f.sub?s.sub(a,c):f.last,d=1,c=arguments.length,f=!(vn&f.order);if(t=c<1?(n=m,h):c<2?(n=o(n),h):(n=o(n),o(t)),n=s.wrapR(n,a),t=s.wrapR(t,a),s.gt(n,t)&&(a=n,n=t,t=a,d=-1),n=s.clamp(n,m,h),f&&(t=s.clamp(t,m,h)),s.lte(n,t)){for(h=[l.$.order,l.__index,l._index,l.__item&&l.__item.slice(),l._item,l.__subindex,l._subindex,l.__subitem,l._subitem,l._prev,l._next],f&&l.index(n),r=s.val(s.sub(t,n)),e=new Array(r+1),u=0;u<=r&&null!=(i=l.next());)e[u++]=i;e.length>u&&(e.length=u),d<0&&1<e.length&&kn(e,e),l.$.order=h[0],l.__index=h[1],l._index=h[2],l.__item=h[3],l._item=h[4],l.__subindex=h[5],l._subindex=h[6],l.__subitem=h[7],l._subitem=h[8],l._prev=h[9],l._next=h[10],l._update()}else e=[];return e},storeState:function(n){var t=this,t=[t.$.order,null==t.__index?null:t.__index.toString(),null==t._index?null:t._index.toString(),t.__item,t._item,null==t.__subindex?null:t.__subindex.toString(),null==t._subindex?null:t._subindex.toString(),t.__subitem,t._subitem,t._prev,t._next,t.$.sub?t.$.sub.storeState(!0):null];return n?t:JSON.stringify(t)},resumeState:function(n){var t=this,e=J.Arithmetic;return null!=n&&(n=On(n)?JSON.parse(n):n,t.$.order=n[0],t.__index=null==n[1]?null:e.num(n[1]),t._index=null==n[2]?null:e.num(n[2]),t.__item=n[3],t._item=n[4],t.__subindex=null==n[5]?null:e.num(n[5]),t._subindex=null==n[6]?null:e.num(n[6]),t.__subitem=n[7],t._subitem=n[8],t._prev=n[9],t._next=n[10],t.$.sub&&n[11]&&t.$.sub.resumeState(n[11])),t}}),P=J.Progression=n(D,{constructor:function n(t,e,r,i){var u=this,l=J.Arithmetic,s=l.num,o=l.O,m=l.I;if(!Nn(u,n))return new n(t,e,r,i);qn(t)||An(t)?(i=e||{},e=1<t.length?t[1]:null,r=2<t.length?t[2]:null,t=0<t.length?t[0]:null):i=i||{},i.type=String(i.type||"arithmetic").toLowerCase(),i.NumberClass=Cn(i.NumberClass,Z)?i.NumberClass:null,u._min=Nn(t,Z)?t.num:s(t||0),u._step=Nn(e,Z)?e.num:s(null==e?1:e),u._max=null==r?l.INF:l.INF===r?r:Nn(r,Z)?r.num:s(r),!i.NumberClass&&Nn(t,Z)&&(i.NumberClass=t[X]),"geometric"===i.type?l.equ(o,u._min)||l.equ(m,u._step)?i.count=m:l.equ(o,u._step)||l.equ(l.J,u._step)?i.count=l.II:i.count=l.INF===u._max?m:l.add(m,vt(l.div(u._max,u._min),l.abs(u._step))):l.equ(o,u._step)?i.count=m:i.count=l.INF===u._max?m:l.add(m,l.div(l.sub(u._max,u._min),l.abs(u._step))),i.last=l.sub(i.count,m),D.call(u,"Progression",i),u.rewind()},_min:null,_step:null,_max:null,dispose:function(){return this._min=null,this._step=null,this._max=null,D[F].dispose.call(this)},rewind:function(n,t){n=-1===n?-1:1;var e=this,r=e.$,i=J.Arithmetic;return n<0?i.INF===e._max?(e.__item=null,e._item=null):("geometric"===e.$.type?e.__item=i.mul(e._min,i.pow(e._step,e.$.last)):e.__item=i.add(e._min,i.mul(e._step,e.$.last)),e._item=e.output(r.NumberClass?new r.NumberClass(e.__item):e.__item)):(e.__item=e._min,e._item=e.output(r.NumberClass?new r.NumberClass(e.__item):e.__item)),r.sub&&!0!==t&&(r.sub.rewind(n),e.__subitem=r.sub.next(n),e._subitem=null!=e._item&&null!=e.__subitem?e.fusion(e._item,e.__subitem):null),e},hasNext:function(n){n=-1===n?-1:1;var t=this.$;return J.Arithmetic.INF===this._max?0<n&&(!t.sub||null!=this.__subitem):t.sub?null!=this._subitem:null!=this.__item},next:function(n){n=-1===n?-1:1;for(var t,e,r=this,i=r.$,u=J.Arithmetic;e=r.__item,t=i.sub?r._subitem:r._item,null!=e&&("geometric"===i.type?n<0?u.equ(e,r._min)?r.__item=null:r.__item=u.div(e,r._step):u.INF!==r._max&&u.equ(e,r._max)?r.__item=null:r.__item=u.mul(e,r._step):n<0?u.equ(e,r._min)?r.__item=null:r.__item=u.sub(e,r._step):u.INF!==r._max&&u.equ(e,r._max)?r.__item=null:r.__item=u.add(e,r._step),null!=r.__item&&(u.lt(r.__item,r._min)||u.INF!==r._max&&u.gt(r.__item,r._max))&&(r.__item=null),r._item=null==r.__item?null:r.output(i.NumberClass?new i.NumberClass(r.__item):r.__item)),null==r.__item&&i.sub&&i.sub.hasNext(n)&&(r.rewind(n,!0),r.__subitem=i.sub.next(n),r._subitem=null!=r._item&&null!=r.__subitem?r.fusion(r._item,r.__subitem):null),i.filter&&null!=t&&!i.filter.apply(t,r););return t},storeState:function(n){var t=this,t=[t._min.toString(),t._step.toString(),t._max.toString(),null==t.__item?null:t.__item.toString(),null==t._item?null:t._item.toString(),null==t.__subitem?null:t.__subitem.toString(),null==t._subitem?null:t._subitem.toString(),t.$.sub?t.$.sub.storeState(!0):null];return n?t:JSON.stringify(t)},resumeState:function(n){var t=this,e=J.Arithmetic;return null!=n&&(n=On(n)?JSON.parse(n):n,t._min="-Infinity"===n[0]?e.NINF:"Infinity"===n[0]?e.INF:e.num(n[0]),t._step="-Infinity"===n[1]?e.NINF:"Infinity"===n[1]?e.INF:e.num(n[1]),t._max="-Infinity"===n[2]?e.NINF:"Infinity"===n[2]?e.INF:e.num(n[2]),t.__item=null==n[3]?null:e.num(n[3]),t._item=null==n[4]?null:e.num(n[4]),t.__subitem=null==n[5]?null:e.num(n[5]),t._subitem=null==n[6]?null:e.num(n[6]),t.$.sub&&n[7]&&t.$.sub.resumeState(n[7])),t}}),k=function n(){var u=this,l=null;if(!Nn(u,n))return new n;l=c(),u.dispose=function(){return u.empty(),l=null,u},u.empty=function(){var n,t,e,r;if(!l)return u;for(n in l)if(z.call(l,n)&&null!=l[n])for(e=0,r=(t=l[n]).length;e<r;e++)t[e]&&t[e].dispose();return u},u.reset=function(){return u.empty(),l=c(),u},u.add=function(n,t){var e=n.next();return null==e?n.dispose():(e=String(e),l[e]?l[e].push(n):l[e]=[n]),u},u.has=function(n){var t=String(n);return!!l[t]&&(function(n,t){var e,r,i=l[t];if(null==i)return;for(delete l[t],e=0,r=i.length;e<r;e++)u.add(i[e],n)}(n,t),!0)}},$=J.PrimeSieve=n(D,{constructor:function n(t){var e=J.Arithmetic;if(!Nn(this,n))return new n(t);(t=t||{}).type=String(t.type||"eratosthenes").toLowerCase(),t.NumberClass=Cn(t.NumberClass,Z)?t.NumberClass:null,t.count=e.I,this._multiples=new k,this._small_primes=bt(),this._small_primes&&this._small_primes.length||(this._small_primes=[e.II]),this._p=0,D.call(this,"PrimeSieve",t)},_multiples:null,_small_primes:null,_p:0,dispose:function(){return this._multiples&&this._multiples.dispose(),this._multiples=null,this._small_primes=null,this._p=null,D[F].dispose.call(this)},rewind:function(n){return this._multiples.reset(),this._p=0,this},hasNext:function(n){return 0<(n=-1===n?-1:1)},next:function(n){if((n=-1===n?-1:1)<0)return null;var t,e,r,i,u,l=this,s=l.$,o=l._multiples,m=l._small_primes,c=J.Arithmetic,f=c.II,a=l.__item;do{if(l._p<m.length)a=m[l._p++],c.gt(a,f)&&(t=c.mul(a,a),e=c.add(a,a),r=m[m.length-1],c.lt(t,r)&&(i=c.div(c.sub(r,t),e),t=c.add(t,c.mul(i,e)),c.lte(t,r)&&(t=c.add(t,e))),o.add(new P(t,e,c.INF)));else{if(c.equ(a,f))a=c.num(3);else for(;a=c.add(a,f),o.has(a););t=c.mul(a,a),e=c.add(a,a),o.add(new P(t,e,c.INF))}u=l.output(s.NumBerClass?new s.NumBerClass(a):a)}while(s.filter&&null!=u&&!s.filter.apply(u,l));return l.__item=a,l._item=u,a}}),L=J.Tensor=n(T,{constructor:function e(){var t,r,n,i,u=null,l=G.call(arguments),s=l.length&&!Nn(l[l.length-1],T)&&!qn(l[l.length-1])&&l[l.length-1]!==+l[l.length-1]&&l.pop()||{};if(l.length&&qn(l[0])&&(l=l[0]),l&&l.length||(l=[]),!Nn(this,e))return new e(l,s);s.type=String(s.type||"tensor").toLowerCase(),s.order=s.order||dn,s.rand=s.rand||{},"partial"===s.type?(l=qn(l)&&l.length?l[0]:l,n=-1,t=s.data||[],r=s.position||null,Nn(l,T)?n=l=(u=l).base():u=s.sub,l=+(l||0)||0,In(t)&&(r=[],t=rn(t).map(function(n){return n=+n,r.push(n),t[n]})),An(t)&&(t=G.call(t)),An(r)&&(r=G.call(r)),t.length&&(On(t[0])||t[0].length&&(!0===t[0][0]||!1===t[0][0]))&&(n===l&&(l+=t.length,n=-1),t=e.generate(l,t,r,s.ordering||null)),n===l&&(l+=(t.length?t[0].length:0)||0,n=-1),s.data=t,s.position=r||Dn((t.length?t[0].length:0)||0,0,1),s.dimension=s.position.length,s.base=l,s.rand.partial=1):"tuple"===s.type?(l[0]=l[0]||1,l[1]=l[1]||1,Nn(l[0],T)?(u=l[0],l[0]=u.dimension()):Nn(l[1],T)?(u=l[1],l[1]=u.base()):u=s.sub,s.base=l[1],s.dimension=Q.max(0,l[0]),"gray"===s.output&&(s.output=function(n,t){return e.gray(n,t[1])})):(n=En(function(n,t){return t<n[0]&&(n[0]=t),t>n[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.gray(n,t)}:"inversion"===s.output?s.output=function(n,t){return e.inversion(n)}:qn(s.output)&&(i=s.output,s.output=function(n,t){return e.component(n,i)})),T.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:T.C,P:T.P,T:T.T,DUAL:T.DUAL,count:function(n,t){var e=J.Arithmetic.O,r=t&&t.type?t.type:"tensor";return"partial"===r?t.data&&t.data.length?J.Arithmetic.num(t.data.length):e:"tuple"===r?!n||n[0]<=0?e:Bt(n[1],n[0]):n&&n.length?et(n):e},initial:function(t,n,e){var r,i=n&&n.type?n.type:"tensor",u=n&&n.order?n.order:dn;return e=-1===e?-1:1,(!(gn&u)&&an&u||gn&u&&!(an&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]?Dn(t[0],e<0?t[1]-1:0,0):[]:t.length?e<0?Dn(t.length,function(n){return t[n]-1}):Dn(t.length,0,0):[],this.DUAL(r,t,n))},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:dn,o=J.Arithmetic;return i=-1===i?-1:1,"partial"===l?r.data&&r.data.length?(an&s&&(i=-i,null!=t&&(t=o.sub(o.num(r.data.length-1),t))),null==t&&(t=Ee(r.data,n,!0)),t=o.val(t),i<0?0<=t-1?r.data[t-1]:null:0<=t&&t+1<r.data.length?r.data[t+1]:null):null:!e[0]||e[0]<=0?null:function(n,t,e,r,i){var u,l,s,o,m,c,f,a=t;"tuple"===r?(s=a[0],a=a[1]):s=a.length;t=f=s-1,s=0,m=o=1,c=0,gn&i&&(o=-o,t=f-t,s=f-s,m=-m,c=f-c);hn&i&&(o=-o,t=f-t,s=f-s,m=-m,c=f-c);an&i&&(e=-e);if(e<0)if("tuple"===r){for(u=t;0<=u&&u<=f&&0===n[u];)u-=o;if(0<=u&&u<=f)for(--a,n[u]=n[u]-1,l=u+o;0<=l&&l<=f;l+=o)n[l]=a;else n=null}else{for(u=t;0<=u&&u<=f&&0===n[u];)u-=o;if(0<=u&&u<=f)for(n[u]=n[u]-1,l=u+o;0<=l&&l<=f;l+=o)n[l]=a[m*l+c]-1;else n=null}else if("tuple"===r){for(u=t;0<=u&&u<=f&&n[u]+1===a;)u-=o;if(0<=u&&u<=f)for(n[u]=n[u]+1,l=u+o;0<=l&&l<=f;l+=o)n[l]=0;else n=null}else{for(u=t;0<=u&&u<=f&&n[u]+1===a[m*u+c];)u-=o;if(0<=u&&u<=f)for(n[u]=n[u]+1,l=u+o;0<=l&&l<=f;l+=o)n[l]=0;else n=null}return n}(n,e,i,l,s)},rand:function(t,n){var e=J.Math.rndInt,r=n&&n.type?n.type:"tensor",i="partial"===r?n.data&&n.data.length?n.data[e(0,n.data.length-1)]:null:(i="tuple"===r?t[0]?Dn(t[0],function(n){return e(0,t[1]-1)}):[]:t.length?Dn(t.length,function(n){return e(0,t[n]-1)}):[],this.DUAL(i,t,n));return i},randu:T.rand,rank:function(n,t,e){var r,i,u=J.Arithmetic,l=e&&null!=e.order?e.order:dn,s=e&&e.type?e.type:"tensor",o=u.add,m=u.sub,c=u.mul,f=u.O,a=u.J;if(!n)return a;if("partial"===s)f=u.num(Ee(e.data,n,!0));else if(n=this.DUAL(n,t,e),"tuple"===s){if(!(r=t[0])||r!==n.length)return a;for(t=t[1],i=0;i<r;i++){if(n[i]<0||n[i]>=t)return a;f=o(c(f,t),n[i])}}else{if(!(r=t.length)||r!==n.length)return a;for(i=0;i<r;i++){if(n[i]<0||n[i]>=t[i])return a;f=o(c(f,t[i]),n[i])}}return(!(gn&l)&&an&l||gn&l&&!(an&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=J.Arithmetic,c=e&&null!=e.order?e.order:dn,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((!(gn&c)&&an&c||gn&c&&!(an&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<e.data.length?e.data[n]:null}else{if("tuple"===f){if(!(o=t[0]))return[];for(s=new Array(o),i=t[1],r=n,u=o-1;0<=u;u--)l=h(r,i),r=d(r,i),s[u]=g(l)}else{if(!(o=t.length))return[];for(s=new Array(o),r=n,u=o-1;0<=u;u--)l=h(r,i=t[u]),r=d(r,i),s[u]=g(l)}s=this.DUAL(s,t,e)}return s},gray:function(n,t,e){return((e=-1===e?-1:1)<0?jn:Ln)(new Array(n.length),n,t)},toGray:function(n,t){return dir=-1===dir?-1:1,Ln(new Array(n.length),n,t)},fromGray:function(n,t){return dir=-1===dir?-1:1,jn(new Array(n.length),n,t)},inversion:function(n){for(var t=n.length,e=t?[0]:[],r=1;r<t;r++)e.splice(r-n[r],0,r);return e},product:fe,directsum:function(){for(var t,e=arguments,n=e.length,r=0,i=0;i<n;i++)r+=e[i].length;return i=t=0,Dn(r,function(n){return 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:Dn(t.length,function(n){return n<e.length&&0<=t[n]&&t[n]<e[n].length?e[n][t[n]]:t[n]})},affine:function(){var r=1===arguments.length&&qn(arguments[0])?arguments[0]:arguments;return r?function(e){return Dn(e.length,function(n){if(n>=r.length||null==r[n])return e[n];var t=r[n];return wn(t)?e[n]+t:t[0]*e[n]+(t[1]||0)})}:xn},conditional:ae,generate:function(n,t,i,u,l){l=l||{},i=i||Dn(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,y=[],x=[],q={},A=function(n){return d<=n&&n<=g},p=!(t=[]),I=m=0;I<b;I++,m++)if(On(r=v[I]))if(e=r.match(nn)){if(!(s=0<e[1].indexOf("..")?(e=e[1].split("..").map(Number))[0]>e[1]?_e(n,Dn(e[0]-e[1]+1,e[1],1).filter(A)).reverse():_e(n,Dn(e[1]-e[0]+1,e[0],1).filter(A)):_e(n,e[1].split(",").map(Number).filter(A))).length){p=!0;break}t.push(s)}else if(e=r.match(Y)){if(!(s=(0<e[1].indexOf("..")?(e=e[1].split("..").map(Number))[0]>e[1]?Dn(e[0]-e[1]+1,e[0],-1):Dn(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(K,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<t?-1:1}}());try{a=new Function(c.map(function(n){return"v"+String(n)}).join(","),"return Math.floor("+r+");")}catch(n){a=null}if(Sn(a)){for(o=0;o<c.length;o++)q[c[o]]?q[c[o]].push(a):q[c[o]]=[a],-1===i.indexOf(c[o])&&-1===x.indexOf(c[o])&&x.push(c[o]);y.push([a,null,null,c,i[m]]),t.push(y[y.length-1])}else i&&i.splice(m--,1)}else i&&i.splice(m--,1);else if(qn(r)){if(!(s=!1===r[0]?_e(n,r.slice(1).filter(A)):(!0===r[0]?r.slice(1):r).filter(A)).length){p=!0;break}t.push(s)}if(p&&(t=[]),x.length)for(I=0,b=x.length;I<b;I++)i.push(x[I]),p||t.push(Dn(_,d,1));if(-1===(I=Vn(i))?(kn(i,i),p||kn(t,t)):0===I&&(r=Wn(i,1,!1,!0),Me(i,r),p||Me(t,r)),p)return[];if(y.length)for(I=0,b=y.length;I<b;I++){for((e=y[I])[1]=e[3].map(function(n){return i.indexOf(n)}),e[2]=i.indexOf(e[4]),o=0;o<e[3].length;o++)if(a=q[e[3][o]],!Sn(t[e[1][o]][0])){if(!(s=t[e[1][o]].filter(function(n){for(var t,e=0,r=a.length;e<r;e++)if(1===a[e].length&&(t=a[e](n),isNaN(t)||t<d||g<t))return!1;return!0})).length){p=!0;break}t[e[1][o]]=s}if(p)break}return p?[]:(u="="===u?ln:"!="===u||"<>"===u?sn:"<"===u?on:"<="===u||"=<"===u?fn:">"===u?mn:(">="===u||"=>"===u)&&cn,h=Sn(l.extra_conditions)?function(n,t,e){var r=n[t];return!(r<d||g<r||on===u&&i[t]>r||mn===u&&i[i.length-1]-i[t]>r)&&l.extra_conditions(n,t,e)}:function(n,t,e){n=n[t];return!(n<d||g<n||on===u&&i[t]>n||mn===u&&i[i.length-1]-i[t]>n)},!0===l.lazy?t:ae(t,u,h))}}}),J.Permutation=n(T,{constructor:function n(t,e){var r=null;if(!Nn(this,n))return new n(t,e);(e=e||{}).type=String(e.type||"permutation").toLowerCase(),Nn(t=t||0,T)?t=(r=t).dimension():r=e.sub,e.base=t,e.dimension=Q.max(0,t),e.rand=e.rand||{},e.rand.involution=1,"multiset"===e.type&&(e.multiplicity=qn(e.multiplicity)&&e.multiplicity.length?e.multiplicity.slice():Dn(e.dimension,1,0),e.multiplicity=e.multiplicity.concat(Dn(e.dimension-En(nt,0,e.multiplicity),1,0)),e.base=e.multiplicity.length,e.multiset=Ie(e.multiplicity,e.dimension)),T.call(this,"Permutation",t,e,r?{method:e.submethod,iter:r,pos:e.subpos,cascade:e.subcascade}:null)},__static__:{C:T.C,P:T.P,T:T.T,DUAL:T.DUAL,count:function(n,t){var e=J.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?Kt(n,t.multiplicity):"derangement"===i?null!=l?e.mul(Kt(n,l),Kt(n-l,!1)):Kt(n,!1):"involution"===i?Kt(n,!0):"connected"===i?Kt(n-1):null!=u?te(n,u,1):Kt(n)},initial:function(n,t,e){var r,i=t&&t.type?t.type:"permutation",u=t&&null!=-t.order?t.order:dn,l=t&&null!=t["cycles="]?0|t["cycles="]:null,s=t&&null!=t["fixed="]?0|t["fixed="]:null;if(n<0)return null;if(0===n)return[];if(e=-1===e?-1:1,(!(gn&u)&&an&u||gn&u&&!(an&u))&&(e=-e),"cyclic"===i)r=e<0?[n-1].concat(Dn(n-1,0,1)):Dn(n,0,1);else if("derangement"===i){if(null!=s||n<2)return null;r=1&n?(s=Q.floor(n/2),e<0?Dn(n-s-1,n-1,-1).concat([s-1,s]).concat(Dn(s-1,s-2,-1)):Dn(n-3,function(n){return 1&n?n-1:n+1}).concat([n-2,n-1,n-3])):e<0?Dn(n,n-1,-1):Dn(n,function(n){return 1&n?n-1:n+1})}else r="multiset"===i?e<0?t.multiset.slice().reverse():t.multiset.slice():"connected"===i?Ne([e<0?Dn(n,n-1,-1):[n-1].concat(Dn(n-1,0,1))],n):"involution"!==i&&null!=l?null:e<0?Dn(n,n-1,-1):Dn(n,0,1);return r=this.DUAL(r,n,t)},succ:function(n,t,e,r,i,u){if(!e||e<=0||null==n)return null;var l=r&&r.type?r.type:"permutation",s=r&&null!=r["cycles="]?0|r["cycles="]:null,o=r&&null!=r["fixed="]?0|r["fixed="]:null;return"derangement"===l&&null!=o||"permutation"===l&&null!=s?null:function n(t,e,r,i,u,l,s){var o,m,c,f,a,h,d,g,_,v,b,p,y,x=e,l=null==l?x:l;if(x<=0)return null;if("connected"===i)return n(t,e-1,r,"permutation",u,null,s);0;y=x-1;g=1;d=y;_=1;v=0;b=1;p=0;gn&u&&(g=-g,d=y-d,_=-_,v=l-1-v,r=-r);hn&u&&(g=-g,d=y-d,b=-1,p=l-1);an&u&&(r=-r);if(r<0)if("cyclic"===i)if(0<_*t[o=y-d]+v)for(b=x-1,g=x+g,c=0;c<x;c++)a=(_*t[o]+v+b)%x,t[o]=_*a+v,o=(o+g)%x;else t=null;else if("involution"===i)t=null;else do{for(h=!1,o=d-g;0<=o&&o<=y&&_*t[o]<=_*t[o+g];)o-=g;if(0<=o&&o<=y){for(m=d;0<=m&&m<=y&&0<g*(m-o)&&_*t[o]<=_*t[m];)m-=g;for(a=t[o],t[o]=t[m],t[m]=a,c=o+g,f=d;0<=c&&c<=y&&0<=f&&f<=y&&0<g*(f-c);)a=t[c],t[c]=t[f],t[f]=a,h=h||b*c+p===t[c]||b*f+p===t[f],c+=g,f-=g;if("derangement"===i)for(0<=m&&m<=y&&(h=h||b*m+p===t[m]),0<=f&&f<=y&&(h=h||b*f+p===t[f]),h=h||b*o+p===t[o],c=o-g;!h&&0<=c&&c<=y;c-=g)h=b*c+p===t[c];else h=!1}else t=null}while(t&&h);else if("cyclic"===i)if(_*t[o=y-d]+v<x-1)for(b=x+1,g=x+g,c=0;c<x;c++)a=(_*t[o]+v+b)%x,t[o]=_*a+v,o=(o+g)%x;else t=null;else if("involution"===i){for(o=x,h=!0;h&&o--;)for(m=t[o],t[o]=o,t[m]=m;m--;)if(t[m]===m){t[o]=m,t[m]=o,h=!1;break}h&&(t=null)}else do{for(h=!1,o=d-g;0<=o&&o<=y&&_*t[o]>=_*t[o+g];)o-=g;if(0<=o&&o<=y){for(m=d;0<=m&&m<=y&&0<g*(m-o)&&_*t[o]>=_*t[m];)m-=g;for(a=t[o],t[o]=t[m],t[m]=a,c=o+g,f=d;0<=c&&c<=y&&0<=f&&f<=y&&0<g*(f-c);)a=t[c],t[c]=t[f],t[f]=a,h=h||b*c+p===t[c]||b*f+p===t[f],c+=g,f-=g;if("derangement"===i)for(0<=m&&m<=y&&(h=h||b*m+p===t[m]),0<=f&&f<=y&&(h=h||b*f+p===t[f]),h=h||b*o+p===t[o],c=o-g;!h&&0<=c&&c<=y;c-=g)h=b*c+p===t[c];else h=!1}else t=null}while(t&&h);return t}(n,e,i=-1===i?-1:1,l,r&&null!=r.order?r.order:dn,r&&null!=r.base?r.base:null,u)},rand:function(n,t){var e=J.Math.rndInt,r=t&&t.type?t.type:"permutation",i=t&&null!=t["cycles="]?0|t["cycles="]:null,u=t&&null!=t["fixed="]?0|t["fixed="]:null;if(n<0)return null;if(0===n)return[];if("cyclic"===r)var l=e(0,n-1),s=0<l?Dn(n-l,l,1).concat(Dn(l,0,1)):Dn(n,0,1);else if("derangement"===r){if(null!=u)return null;s=new Array(n);var o,m,c=!1;do{for(o=0;o<n;o++)s[o]=o;for(o=n-1,c=!1;0<=o;){if(s[m=e(0,o)]===o){c=!0;break}d=s[o],s[o]=s[m],s[m]=d,o--}c=c||0===s[0]}while(c)}else if("involution"===r){s=Dn(n,0,1);for(var f,a,h,d,g,_=J.Math.rnd,v=.5,b=1,p=n,y=[1].concat(Dn(n-1,function(){var n=v;return v=1/(1+(b+=1)*v),n})),x=Dn(n,0,1);2<=p;)f=x[p-1],v=y[--p],d=_(),v<d&&(h=x[a=e(0,p-1)],--p,g=x[a],x[a]=x[p],x[p]=g,g=s[h],s[h]=s[f],s[f]=g)}else if("multiset"===r)s=Bn(t.multiset.slice());else if("connected"===r)s=Bn(Dn(n,0,1),!0);else{if(null!=i)return null;s=Bn(Dn(n,0,1))}return s=this.DUAL(s,n,t)},randu:T.rand,rank:function(t,e,n){var r,i,u,l,s,o,m,c,f,a,h=J.Arithmetic,d=n&&n.type?n.type:"permutation",g=n&&null!=n["cycles="]?0|n["cycles="]:null,_=n&&null!=n["fixed="]?0|n["fixed="]:null,v=n&&null!=-n.order?n.order:dn,b=h.sub,p=h.add,y=h.mul,x=h.div,q=h.O,A=h.I,I=h.J;if(e=e||t.length,!t||e<0||e!==t.length)return I;if(0===e)return q;if(t=this.DUAL(t,e,n),"cyclic"===d){for(i=t[0],r=0;r<e;r++)if((l=t[(r+e-i)%e])!==r)return I;q=h.num(i)}else if("connected"===d){if(e===t.length){for(c={},r=0;r<e;r++){if((l=t[r])<0||e<=l||1===c[l])return I;c[l]=1}if(t=Ce(t)[0],e!==t.length)return I;if((s=t.indexOf(e-1))<0)return I;t=Dn(e,function(n){return t[(n+s)%e]}).slice(1)}if(e-1!==t.length)return I;for(o=we(null,t),u=e-2,r=0;r<u;r++)q=p(y(q,e-1-r),o[r])}else{if("involution"===d)return yn();if("derangement"===d){if(null!=_)return yn();for(m=new Array(e),c={},r=0;r<e;r++){if((l=t[r])<0||e<=l||r===l||1===c[l])return I;c[l]=1,m[l]=r}for(o=function(n,e,t){for(var r=e.length,i=Dn(r,0,0),u=0;u<r;u++)i[Q.min(u,e[u])]++;return n=En(function(n,t){return n[t]=t+1===r?0:n[t+1]+i[t+1],n},n||new Array(r),null,r-1,0,-1),-1===t&&(n=En(function(n,t){return n[t]=r-t-1-n[t]-(t<e[t]),n},n,null,0,r-1,1)),n}(null,t),r=0;r+1<e;r++)q=p(q,ne(e,t[r],r,s=o[r],m));return q}if("multiset"===d){for(a=n.multiplicity.slice(),r=0;r<e;r++){if((l=t[r])<0||l>=a.length||a[l]<=0)return I;a[l]--}if(0!==a.filter(function(n){return 0!==n}).length)return I;for(a=n.multiplicity.slice(),f=n&&null!=n.count?n.count:Kt(e,a),u=e-1,r=0;r<u&&h.gt(f,A);r++)q=p(q,x(y(f,tt(a,0,(i=t[r])-1,1)),e-r)),f=x(y(f,a[i]),e-r),a[i]--}else{if(null!=g)return yn();for(c={},r=0;r<e;r++){if((l=t[r])<0||e<=l||1===c[l])return I;c[l]=1}for(o=we(null,t),u=e-1,r=0;r<u;r++)q=p(y(q,e-r),o[r])}}return(!(gn&v)&&an&v||gn&v&&!(an&v))&&(q=b(n&&null!=n.last?n.last:b(this.count(e,n),A),q)),q},unrank:function(t,e,n){var r,i,u,l,s,o,m,c,f,a,h,d,g=J.Arithmetic,_=n&&n.type?n.type:"permutation",v=n&&null!=n["cycles="]?0|n["cycles="]:null,b=n&&null!=n["fixed="]?0|n["fixed="]:null,p=n&&null!=-n.order?n.order:dn,y=g.mod,x=g.div,q=g.mul,A=(g.add,g.sub),I=g.val;if(e<0)return null;if(null==(t=null==t?null:g.num(t))||!g.inside(t,g.J,n&&null!=n.count?n.count:this.count(e,n)))return null;if(0===e)return[];if((!(gn&p)&&an&p||gn&p&&!(an&p))&&(t=A(n&&null!=n.last?n.last:A(this.count(e,n),g.I),t)),"cyclic"===_)t=I(t),r=Dn(e,function(n){return(t+n)%e});else{if("involution"===_)return yn();if("connected"===_){for((r=Dn(e-1))[e-2]=0,u=t,l=e-3;0<=l;l--)a=y(u,f=e-1-l),u=x(u,f),r[l]=I(a);Se(r,r),r=Ne([[e-1].concat(r)],e)}else if("derangement"===_){if(null!=b||e<2)return null;for(r=new Array(e),i=Dn(e,-1,0),l=0;l<e&&g.gte(t,g.O);){for(s=c=0;s<l;s++)c+=r[s]>l;for(u=g.O,m=e-1;0<=m&&(m===l||0<=i[m]&&i[m]<l||(u=ne(e,m,l,e-l-1-c-(l<m),i),!g.lte(u,t)));m--);if(m<0)break;t=A(t,u),i[r[l]=m]=l,l++}}else if("multiset"===_)for(d=n.multiplicity.slice(),r=Dn(e),h=n&&null!=n.count?n.count:Kt(e,d),l=0;l<e;l++){for(o=f=0,u=I(x(q(t,e-l),h));o<d.length&&f+d[o]<=u;)f+=d[o++];t=A(t,x(q(h,f),e-l)),h=x(q(h,d[o]),e-l),d[o]--,r[l]=o}else{if(null!=v)return null;for((r=Dn(e))[e-1]=0,u=t,l=e-2;0<=l;l--)a=y(u,f=e-l),u=x(u,f),r[l]=I(a);Se(r,r)}}return r=this.DUAL(r,e,n)},permute:Me,shuffle:function(n,t){if("cyclic"!==t)return"connected"===t?Bn(n,!0):Bn(n);t=n.length,t=J.Math.rndInt(0,t-1);return 0<t&&n.push.apply(n,n.splice(0,t)),n},product:function(){return arguments.length?En(function(n,t){return Me(n,t,!0)},(n=qn(arguments[0])&&qn(arguments[0][0])?arguments[0]:G.call(arguments)).length?n[0].slice():[],n,1,n.length-1,1):null;var n},directsum:function(){return arguments.length?function(t){for(var e,r,n=t.length,i=0,u=0;u<n;u++)i+=t[u].length;return u=e=0,r=n?t[u].length:0,Dn(i,function(n){return e+r<=n&&(e+=r,r=t[++u].length),e+t[u][n-e]})}(qn(arguments[0])&&qn(arguments[0][0])?arguments[0]:G.call(arguments)):null},cycles:function(n,t){return(-1===t?Ne:Ce)(n)},toCycles:function(n){return Ce(n)},fromCycles:Ne,swaps:function(n,t){return(-1===t?Ze:Re)(n)},toSwaps:Re,fromSwaps:Ze,inversion:function(n,t){return(-1===t?Se:we)(null,n)},toInversion:function(n){return we(null,n)},fromInversion:function(n){return Se(null,n)},inverse:function(n){return Oe(null,n)},toInverse:function(n){return Oe(null,n)},multiset:function(n,t,e){return n===+n?Ie(t,n,-1===e?-1:1):-1===e?Oe(null,Wn(n,1,!1,!0)):(n=n,(r=t)&&r.length?En(function(n,t,e){return n[e]=t<r.length?r[t]:t,n},n,n):n);var r},matrix:function(n,t,e){return(-1===e?Ae:qe)(null,n,t)},toMatrix:function(n,t){return qe(null,n,t)},fromMatrix:function(n,t){return Ae(null,n,t)},parity:yn,isPermutation:function(n,t){if((t=t||n.length)!==n.length)return!1;for(var e,r=Dn(t,0,0),i=0;i<t;i++){if((e=n[i])<0||t<=e||0<r[e])return!1;r[e]++}for(i=0;i<t;i++)if(1!==r[i])return!1;return!0},isIdentity:function(n){for(var t=n.length,e=0;e<t;e++)if(n[e]!==e)return!1;return!0},isCyclic:function(n){for(var t=n.length,e=1,r=n[0];e<t;e++)if(n[e]!==(r+e)%t)return!1;return!0},isDerangement:function(n,t,e){t|=0;for(var r=0,i=n.length,u=0;u<i;u++)if(n[u]===u&&++r>t)return!1;return!0!==e||r===t},isInvolution:function(n){for(var t=n.length,e=0,r=n[e];e<t;r=n[++e])if(r<0||t<=r||n[r]!==e)return!1;return!0},isKthroot:function(n,t){if((t=t||1)<1)return!1;for(var e,r,i=n.length,u=0;u<i;u++){for(e=n[u],r=1;r<=t&&u!==e;)r++,e=n[e];if(u!==e||r!==t&&(t<=r||0<t%r))return!1}return!0},isConnected:function(n){for(var t=n.length-1,e=-1,r=0,i=n[r];r<t;i=n[++r])if(e<i&&(e=i),e<=r)return!1;return!0},isKcycle:function(n,t,e,r){if(!n.length||t<=0)return!1;r=!1!==r;for(var i,u=n.length,l=0,s=0,o=0,m=new Array(u);o<u;){if(l===(i=n[l])||1===m[i])for(!r&&l===i||s++,m[i]=1,l=0;l<u&&1===m[n[l]];)l++;else m[i]=1,l=i;o++}return"<="===e||"=<"===e?s<=t:">="===e||"=>"===e?t<=s:s===t}},output:function(n){return n&&"connected"===this.$.type&&this.n-1===n.length&&(n=Ne([[this.n-1].concat(n)],this.n)),T[F].output.call(this,n)},_update:function(){var t,e,r,n=this;return n.__item&&"connected"===n.$.type&&(r=n.n)===n.__item.length&&(t=Ce(n.__item)[0],e=t.indexOf(r-1),n.__item=Dn(r,function(n){return t[(n+e)%r]}).slice(1)),n.item__=(n.__item,n.n,n.$.order,n.$.type,null),n}}),(j=J.Combination=n(T,{constructor:function e(n,t,r){var i,u=null;if(!Nn(this,e))return new e(n,t,r);qn(n)||An(n)?(r=t||{},t=n[1]||0,n=n[0]||0):(r=r||{},n=n||0,t=t||0),r.type=String(r.type||"combination").toLowerCase(),-1<r.type.indexOf("+")&&((i=r.type.split("+")).sort(),r.type=i.join("+")),Nn(t,T)?t=(u=t).dimension():Nn(n,T)?n=(u=n).base():u=r.sub,r.base=n,r.dimension=Q.max(0,t),"binary"===r.output?r.output=function(n,t){return e.binary(n,t[0],1)}:"conjugate"===r.output&&(r.output=function(n,t){return e.complement(n,t[0])}),T.call(this,"Combination",[n,t],r,u?{method:r.submethod,iter:u,pos:r.subpos,cascade:r.subcascade}:null)},__static__:{C:T.C,P:T.P,T:T.T,DUAL:T.DUAL,count:function(n,t){t=t&&t.type?t.type:"combination";return n[0]<0||n[1]<0?J.Arithmetic.O:"ordered+repeated"===t||"variation+repeated"===t||"repeated+variation"===t?Bt(n[0],n[1]):"repeated"===t||"combination+repeated"===t?Kt(n[0]+n[1]-1,n[1]):Kt(n[0],"ordered"===t||"variation"===t?-n[1]:n[1])},initial:function(n,t,e){var r=t&&t.type?t.type:"combination",i=t&&null!=t.order?t.order:dn;return n[0]<0||n[1]<0?null:0===n[1]?[]:(e=-1===e?-1:1,(!(gn&i)&&an&i||gn&i&&!(an&i))&&(e=-e),e="repeated+variation"===r||"variation+repeated"===r||"ordered+repeated"===r||"combination+repeated"===r||"repeated"===r?Dn(n[1],e<0?n[0]-1:0,0):"ordered"===r||"variation"===r?e<0?Dn(n[1],n[0]-1,-1):Dn(n[1],0,1):Dn(n[1],e<0?n[0]-n[1]:0,1),e=this.DUAL(e,n,t))},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,gn&i&&(a=-a,h=p-1-h,c=-c,t=f-t,d=-d,g=f-g);hn&i&&(c=-c,t=f-t,d=-d,g=f-g);an&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=Le(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&&s<p;s-=a)if(null==u[m=a*s+h]){o=l,u[m]=1;break}u[n[l]]=null,l-=c}if(-1<o)for(n[o]=m,m=a*(s=p-1-h)+h,l=o+c;0<=l&&l<=f;l+=c){for(;0<=s&&s<p&&null!=u[m];)m=a*(s-=a)+h;n[l]=m,u[m]=1}else n=null}else if(_=(v="repeated"===r||"combination+repeated"===r)?0:1,gn&i)if(d=-d,g=f-g,l=f-(t=f-t),s=(c=-c)<0?0:f,!v&&n[s]+1>b||v&&0<n[s]){if(v)for(;0<=l&&l<=f&&0===n[l];)l+=c;else for(;0<=l&&l<=f&&d*l+g===n[l];)l+=c;for(--n[l],l-=c;0<=l&&l<=f;)n[l]=n[l+c]-_,l-=c}else n=null;else{for(o=-1,l=t;0<=l-c&&l-c<=f;l-=c)if(n[l]>n[l-c]+_){o=l;break}if(!(0<=o&&o<=f)&&0<n[c<0?f:0]&&(o=c<0?f:0),0<=o&&o<=f){for(m=p-1+_,l=t;0<=l&&l<=f&&0<c*(l-o);l-=c)m-=_,n[l]=m;n[o]--}else n=null}else if("ordered+repeated"===r||"variation+repeated"===r||"repeated+variation"===r){for(l=t;0<=l&&l<=f&&n[l]+1===p;)l-=c;if(0<=l&&l<=f)for(n[l]=n[l]+1,s=l+c;0<=s&&s<=f;s+=c)n[s]=0;else n=null}else if("ordered"===r||"variation"===r){for(null==u&&(u=Le(n,0,b,0,r)),l=t,o=-1;-1===o&&0<=l&&l<=f;){if(a*n[l]+h+a<p)for(s=a*n[l]+h+a;0<=s&&s<p;s+=a)if(null==u[m=a*s+h]){o=l,u[m]=1;break}u[n[l]]=null,l-=c}if(-1<o)for(n[o]=m,m=a*(s=h)+h,l=o+c;0<=l&&l<=f;l+=c){for(;0<=s&&s<p&&null!=u[m];)m=a*(s+=a)+h;n[l]=m,u[m]=1}else n=null}else if(_=(v="repeated"===r||"combination+repeated"===r)?0:1,gn&i)if(c=-c,d=-d,g=f-g,l=f-(t=f-t),!v&&n[l]+b<p||v&&n[l]+1<p){for(m=d*l+g;0<=l+c&&l+c<=f&&n[l]+_===n[l+c];)n[l]=m,l+=c,m+=_;n[l]+=1}else n=null;else{if(v){for(o=-1,s=p-1,l=t;0<=l&&l<=f;l-=c)if(n[l]<s){o=l;break}}else for(o=-1,s=p-b,l=t;0<=l&&l<=f;l-=c)if(n[l]<s+d*l+g){o=l;break}if(0<=o&&o<=f){if((m=n[o]+1)===(s=v?p-1:p-b+d*o+g))n[o]=m;else if(m<s)for(l=o;0<=l&&l<=f;l+=c)n[l]=m,m+=_}else n=null}return n}(n,e,i=-1===i?-1:1,r&&r.type?r.type:"combination",r&&null!=r.order?r.order:dn,u)},rand:function(t,n){var e,r,i,u,l=n&&n.type?n.type:"combination",s=t[1],o=J.Math.rndInt;return t[0]<0||t[1]<0?null:0===s?[]:(r=(t=t[0])-s,i=t-1,"repeated"===l||"combination+repeated"===l||"ordered+repeated"===l||"variation+repeated"===l||"repeated+variation"===l?(e=1===s?[o(0,i)]:Dn(s,function(){return o(0,i)}),1<s&&("repeated"===l||"combination+repeated"===l)&&Wn(e,1,!0)):e="ordered"===l||"variation"===l?(u={},1===s?[o(0,i)]:t===s?Bn(Dn(s,0,1)):Dn(s,function(){for(var n=o(0,i);1===u[n];)n=(n+1)%t;return u[n]=1,n})):(u={},1===s?[o(0,i)]:t===s?Dn(s,0,1):r<s?_e(t,Dn(r,function(){for(var n=o(0,i);1===u[n];)n=(n+1)%t;return u[n]=1,n}),!0):Wn(Dn(s,function(){for(var n=o(0,i);1===u[n];)n=(n+1)%t;return u[n]=1,n}),1,!0)),e=this.DUAL(e,t,n))},randu:T.rand,rank:function(n,t,e){var r,i,u,l,s,o,m=J.Arithmetic,c=m.add,f=m.sub,a=m.mul,h=m.O,d=m.I,g=m.J,_=h,v=t[1],b=e&&null!=e.order?e.order:dn,m=e&&e.type?e.type:"combination";if(!n||t[0]<0||t[1]<0||v!==n.length)return g;if(0===v)return h;if(n=this.DUAL(n,t,e),"ordered+repeated"===m||"variation+repeated"===m||"repeated+variation"===m)for(l=t[0],r=0;r<v;r++){if(n[r]<0||n[r]>=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:Kt(l,v),r=1;r<=v;r++){if(n[r-1]<0||n[r-1]>=t[0]||r<v&&n[r-1]>n[r])return g;(u=v+1-r)<=(i=l-1-n[r-1]-r+1)&&(_=c(_,Kt(i,u)))}_=f(f(s,d),_)}else if("ordered"===m||"variation"===m){for(l=t[0],o={},r=0;r<v;r++){if(n[r]<0||n[r]>=l||1===o[n[r]])return g;o[n[r]]=1}for(n=we(null,n,l),r=0;r<v;r++)_=c(a(_,l-r),n[r])}else{for(l=t[0],s=e&&e.count?e.count:Kt(l,v),r=1;r<=v;r++){if(n[r-1]<0||n[r-1]>=l||r<v&&n[r-1]>=n[r])return g;(u=v+1-r)<=(i=l-1-n[r-1])&&(_=c(_,Kt(i,u)))}_=f(f(s,d),_)}return(!(gn&b)&&an&b||gn&b&&!(an&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=J.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,y=t[1],x=e&&e.type?e.type:"combination",q=e&&null!=e.order?e.order:dn;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===y)return[];if((!(gn&q)&&an&q||gn&q&&!(an&q))&&(n=h(e&&null!=e.last?e.last:h(this.count(t,e),c.I),n)),t=t[0],r=Dn(y),"ordered+repeated"===x||"variation+repeated"===x||"repeated+variation"===x)for(l=n,o=y-1;0<=o;o--)s=g(l,t),l=d(l,t),r[o]=p(s);else if("ordered"===x||"variation"===x){for(l=n,o=y-1;0<=o;o--)s=g(l,u=t-o),l=d(l,u),r[o]=p(s);Se(r,r,u)}else for(u=(m="repeated"===x||"combination+repeated"===x)?t+y-1:t,n=h(h(i=e&&e.count?e.count:Kt(u,y),a),n),i=d(_(i,u-y),u),s=u-y+1,l=y,o=u-1;v(i,n)?(r[y-l]=m?u-s-y+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<l;);return t=[t,y],r=this.DUAL(r,t,e)},complement:function(n,t,e){return!0===e?Bn(_e(t,n,!0)):_e(t,n)},binary:function(n,t,e){return(-1===e?be:ve)(n,t)},toBinary:ve,fromBinary:be,pick:function(n,t,e){return 0<t&&n.length?Hn(n,t,"ordered+repeated"!==e&&"variation+repeated"!==e&&"repeated+variation"!==e&&"ordered"!==e&&"variation"!==e,"ordered+repeated"===e||"variation+repeated"===e||"repeated"===e||"combination+repeated"===e,new Array(t)):[]},choose:function(t,e){return e&&e.length?Dn(e.length,function(n){return 0<=e[n]&&e[n]<t.length?t[e[n]]:null}):[]}},_update:function(){return this.item__=Le(this.__item,this.n[0],this.n[1],this.$.order,this.$.type),this}})).conjugate=j.complement,j.project=j.choose,J.Powerset=J.Subset=n(T,{constructor:function e(n,t){var r=null;if(!Nn(this,e))return new e(n,t);t=t||{},Nn(n=n||0,T)?n=(r=n).base():r=t.sub,t.type=t.type||"subset",t.rand=t.rand||{},t.base=n,t.mindimension=0,t.maxdimension=Q.max(0,n),t.dimension=t.maxdimension,"binary"===t.output&&(t.output=function(n,t){return e.binary(n,t,1)}),T.call(this,"Subset",n,t,r?{method:t.submethod,iter:r,pos:t.subpos,cascade:t.subcascade}:null)},__static__:{C:T.D,P:T.P,T:T.T,DUAL:function(n,t,e,r){if(null==n)return null;var i,u=null;return e&&"binary"===e.type&&(i=e&&null!=e.order?e.order:dn,u=e.order,e.order=hn&i?i&~hn:i|hn),n=T.DUAL.call(this,n,t,e,r),e&&null!=u&&(e.order=u),n},count:function(n,t){return n<0?J.Arithmetic.O:Vt(n)},initial:function(n,t,e){var r,i=t&&t.type?t.type:"subset",u=t&&null!=t.order?t.order:dn;return n<0?null:(e=-1===e?-1:1,(!(gn&u)&&an&u||gn&u&&!(an&u))&&(e=-e),r=[],0<n&&("binary"!==i||_n&u?e<0&&(r=[n-1]):e<0&&(r=Dn(n,0,1))),r=this.DUAL(r,n,t,1))},succ:function(n,t,e,r,i,u){if(null==n)return null;var l,s,o=J.Arithmetic,m=r&&r.type?r.type:"subset",c=r&&null!=r.order?r.order:dn;if(e<=0)return null;if(_n&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(an&c&&(t=o.sub(o.sub(s,o.I),t)),t=Un(t),l=0,(n=new Array(e+1))[e]=0;l<e&&o.gt(t,o.O);)o.gt(o.band(t,1),o.O)&&(n[n[e]++]=l),l++,t=o.shr(t,1);return n=this.DUAL(n,e,r,1)}return null}return"binary"===m?T.succ.call(this,n,t,e,r,i):function(n,t,e,r){var i,u,l,s,o=t,m=t-1;if(t<=0)return null;if(u=1,gn&r)return null;hn&r&&(u=-u);an&r&&(e=-e);s=u<0?(i=t-(n[o]||1),l=s=t-1,i):(i=0,s=n[o]-1,l=i,s);e<0?0<n[o]?0<(e=n[s])?1===n[o]||e>n[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]+0<m?+n[s]+0<m?(n[s+u]=n[s]+1,n[o]++):(n[s-u]+=1,n[o]--):n=null;return n}(n,e,-1===i?-1:1,c)},rand:function(n,t){var e,r=J.Math.rndInt;if(n<0)return null;for(var i=null,u=n-1;0<=u;u--)r(0,1)&&(i={len:i?i.len+1:1,k:u,next:i});return e=i?Dn(i.len,function(n){var t=i.k;return i=i.next,t}):[],this.DUAL(e,n,t,1)},randu:T.rand,rank:function(n,t,e){var r,i,u,l,s,o=J.Arithmetic,m=o.O,c=o.I,f=o.J,a=o.add,h=o.sub,d=e&&e.type?e.type:"subset",g=e&&null!=e.order?e.order:dn,o="binary"===d,d=gn&g&&!(hn&g)||hn&g&&!(gn&g),_=f;if(!e||!n||t<0)return f;if(t+1===(n=this.DUAL(n,t,e,-1)).length&&(n=o&&!d||d&&!o?n.slice(t-n[t],t):n.slice(0,n[t])),e.mindimension>n.length||e.maxdimension<n.length)return f;if(0===t)_=m;else if(_n&g){for(l=n.length,s={},_=m,u=0;u<l;u++){if((r=n[u])<0||t<=r||1===s[r])return f;_=a(_,Wt(t,r)),s[r]=1}_=Jn(_),an&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<l;u++){if((r=n[u])<0||t<=r||1===s[r])return f;_=a(_,Wt(t,r)),s[r]=1}(!(gn&g)&&an&g||gn&g&&!(an&g))&&(_=h(e&&null!=e.last?e.last:h(this.count(t,e),c),_))}else{for(l=n.length,i=null,s={},_=m,u=0;u<l;u++){if((r=n[u])<0||t<=r||1===s[r])return f;_=a(_,zt(t,r,i)),s[r]=1,i=r}an&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=J.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:dn,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)<t)if(_n&v)for(an&v&&(n=d(e&&null!=e.last?e.last:d(b,c),n)),n=Un(n),i=0;i<t&&h(n,m);)h(f(n,1),m)&&(r[r[t]++]=i),i++,n=a(n,1);else if("binary"===_)for((!(gn&v)&&an&v||gn&v&&!(an&v))&&(n=d(e&&null!=e.last?e.last:d(b,c),n)),i=0;i<t&&h(n,m);)h(f(n,1),m)&&(r[r[t]++]=i),i++,n=a(n,1);else for(an&v&&(n=d(e&&null!=e.last?e.last:d(b,c),n)),l=null,i=0,p=m;i<t&&h(n,m);){for(p=s=zt(t,u=i,l);i+1<t&&h(n,s);)u=i,p=s,s=zt(t,++i,l);g(n,s)&&(p=s,u=i),l=r[r[t]++]=u,n=d(n,p)}return r=r.slice(0,r[t]),r=this.DUAL(r,t,e,1)},binary:function(n,t,e){return(-1===e?be:ve)(n,t)}},_update:function(){var n=this.$,t=this.n,e=this.__item,r=n.order||dn,i="binary"===n.type,n=gn&r&&!(hn&r)||hn&r&&!(gn&r);return null!=e&&t+1!==e.length&&(r=e.length,e=e.slice(),r<t&&(i&&!n||n&&!i?e.unshift:e.push).apply(e,new Array(t-r)),e.push(r),this.__item=e),this},output:function(n){if(null==n)return null;var t,e,r=this.n;return r+1===n.length&&(e=(t=this.$).order||dn,t="binary"===t.type,e=gn&e&&!(hn&e)||hn&e&&!(gn&e),n=t&&!e||e&&!t?n.slice(r-n[r],r):n.slice(0,n[r])),T[F].output.call(this,n)}}),(t=J.Partition=n(T,{constructor:function e(n,r){var t,i,u,l,s=null;if(!Nn(this,e))return new e(n,r);(r=r||{}).type=r.type||"partition",Nn(n=n||0,T)?n=(s=n).base():s=r.sub,l=null!=r["max="]?0|r["max="]:null,t=null!=r["min="]?0|r["min="]:null,u=null!=(i=null!=r["parts="]?0|r["parts="]:null)?i:null!=t&&null!=l?l===t?Q.ceil(n/t):Q.max(1,Q.ceil((n-l)/t))+1:null!=t?Q.ceil(n/t):null!=l?Q.max(0,n-l)+1:n,l=null!=i?i:null!=t&&null!=l?l===t?Q.ceil(n/l):Q.max(1,Q.ceil((n-t)/l))+1:null!=t?2:null!=l?Q.ceil(n/l):1,r.base=n,r.mindimension=Q.max(1,Q.min(l,u)),r.maxdimension=Q.max(1,Q.max(l,u)),r.dimension=r.maxdimension,r.rand=r.rand||{},"conjugate"===r.output?r.output=function(n,t){return xe(0,n,hn&r.order&&!(gn&r.order)||gn&r.order&&!(hn&r.order)?-1:1)}:"subset"===r.output?r.output=function(n,t){return e.subset(n,1)}:"packed"===r.output&&(r.output=function(n,t){return e.pack(n,1)}),T.call(this,"Partition",n,r,s?{method:r.submethod,iter:s,pos:r.subpos,cascade:r.subcascade}:null)},__static__:{C:function(n,t,e,r,i){var u="composition"===(r&&r.type?r.type:"partition"),l=r&&null!=r["max="]?0|r["max="]:null,s=r&&null!=r["min="]?0|r["min="]:null,o=-1===i;return null!=(r&&null!=r["parts="]?0|r["parts="]:null)||null!=l||null!=s||(e+1===n.length?((s=(n=xe(u,n=o?n.slice(e-n[e][0],e):n.slice(0,n[e][0]),i)).length)<e&&n[o?"unshift":"push"].apply(n,new Array(e-s)),n.push([s,0,0])):n=xe(u,n,i)),n},P:T.P,T:T.T,DUAL:function(n,t,e,r){if(null==n)return null;e&&e.type&&e.type;var i=e&&null!=e.order?e.order:dn,u=null;return gn&i&&(u=e.order,e.order=hn&i?i&~hn:i|hn),n=T.DUAL.call(this,n,t,e,r),e&&null!=u&&(e.order=u),n},count:function(n,t){var e=J.Arithmetic,r=e.O,i=t&&null!=t["max="]?0|t["max="]:null,u=t&&null!=t["min="]?0|t["min="]:null,l=t&&null!=t["parts="]?0|t["parts="]:null,t=t&&t.type?t.type:"partition";return n<0?r:0===n?!(null==l||0<l)||null!=i&&0!==i||null!=u&&0!==u?r:e.I:("composition"===t?se:ie)(n,l,i,u)},initial:function(r,n,i){var t,u,l,s,o,e=n&&n.type?n.type:"partition",m=n&&null!=n["max="]?0|n["max="]:null,c=n&&null!=n["min="]?0|n["min="]:null,f=n&&null!=n["parts="]?0|n["parts="]:null,a=n&&null!=n.order?n.order:dn,h=n&&n.dimension?n.dimension:1,e="composition"===e;if(0===r)t=!(null==f||0<f)||null!=m&&0!==m||null!=c&&0!==c?null:Dn(f||1,0,0);else{if(r<0||null!=f&&null!=m&&null!=c&&(f<=0||c<=0||m<=0||m<c||r+c<f*c+m||f*m+c<r+m)||null!=m&&null!=c&&(m<=0||c<=0||m<c||r<m||r<c||m===c&&0!=r%m||m!==c&&(r<m+c||m+c<r&&r-(m+c)<c))||null!=f&&null!=c&&(f<=0||c<=0||r<f*c)||null!=f&&null!=m&&(f<=0||m<=0||r+1<f+m||f*m<r)||null!=c&&(c<=0||r<c||c<r&&r<c+c)||null!=m&&(m<=0||r<m)||null!=f&&(f<=0||r<f))return null;if(i=-1===i?-1:1,(!(gn&a)&&an&a||gn&a&&!(an&a))&&(i=-i),(t=new Array(h+1))[h]=[0,0,0],f&&m&&c)if(t[h][0]=f,m===c)t=f*m===r?En(function(n,t,e){return n[e]=m,n[h][1]++,n[h][2]++,n},t,null,0,f-1,1):null;else{if(f<=1||r<c+m)return null;e?(o=r-c-m-(2<f?c*(f-2):0),t[0]=m,t[h][1]++,(t=En(function(n,t,e){return n[e]=Q.min(m,c+o),o-=n[e]-c,m===n[e]&&n[h][1]++,c===n[e]&&n[h][2]++,n},t,null,1,f-2,1))[f-1]=c,t[h][2]++,0<i&&kn(t,t,0,0,f-1)):i<0?(o=r-c-m-(2<f?c*(f-2):0),t[0]=m,t[h][1]++,(t=En(function(n,t,e){return n[e]=Q.min(m,c+o),o-=n[e]-c,m===n[e]&&n[h][1]++,c===n[e]&&n[h][2]++,n},t,null,1,f-2,1))[f-1]=c,t[h][2]++):(o=Q.max(c,Q.min(m,2<f?Q.floor((r-m-c)/(f-2)):r-m-c)),l=2<f?(r-m-c)%(f-2):0,t=En(function(n,t,e){return n[e]=0===e?m:f-1===e?c:e-1<l?o+1:o,m===n[e]&&n[h][1]++,c===n[e]&&n[h][2]++,n},t,null,0,f-1,1))}else if(m&&c)if(m===c){if(0!=r%m)return null;t[h][0]=Q.ceil(r/m),t=En(function(n,t,e){return n[e]=m,n[h][1]++,n[h][2]++,n},t,null,0,t[h][0]-1,1)}else if(i<0){if((l=Q.floor((r-c)/m))<=0)return null;0<(o=r-c-l*m)&&o<c&&(l--,o+=m-c),t[h][0]=l+1+(0<o),t=En(function(n,t,e){return e<l?(n[e]=m,n[h][1]++):e===l&&0<o?((n[e]=o)===m&&n[h][1]++,o===c&&n[h][2]++):(n[e]=c,n[h][2]++),n},t,null,0,t[h][0]-1,1)}else{if((l=Q.floor((r-m)/c))<=0)return null;o=r-m-l*c,s=Q.max(1,Q.floor(o/l)),t[h][0]=l+1,t=En(function(n,t,e){return 0===e?(n[e]=m,n[h][1]++):0<o?(n[e]=c+s,n[e]===m&&n[h][1]++,n[e]===c&&n[h][2]++,o-=s):(n[e]=c,n[h][2]++),n},t,null,0,t[h][0]-1,1),e&&kn(t,t,t[h][0],0,t[h][0]-1)}else if(f&&c){if(1===(t[h][0]=f)){if(r!==c)return null;t[0]=c,t[h][2]=1}e?(o=r-(l=f-1)*c,(t=En(function(n,t,e){return n[e]=c,n[h][2]++,n},t,null,1,f-1,1))[0]=o,c===o&&t[h][2]++,0<i&&kn(t,t,0,0,f-1)):i<0?(o=r-(l=f-1)*c,(t=En(function(n,t,e){return n[e]=c,n[h][2]++,n},t,null,1,f-1,1))[0]=o,c===o&&t[h][2]++):(o=Q.max(c,1<f?Q.floor((r-c)/(f-1)):r-c),l=1<f?(r-c)%(f-1):0,(t=En(function(n,t,e){return n[e]=e<l?o+1:o,c===n[e]&&n[h][2]++,n},t,null,0,f-2,1))[f-1]=c,t[h][2]++)}else if(f&&m){if(1===(t[h][0]=f)){if(r!==m)return null;t[0]=m,t[h][1]=1}e?(o=r,t=En(function(n,t,e){e=f-1-e;return n[e]=Q.min(m,o-e),o-=n[e],m===n[e]&&n[h][1]++,n},t,null,0,f-1,1),i<0&&kn(t,t,0,0,f-1)):t=i<0?(o=r,En(function(n,t,e){return n[e]=Q.min(m,o-(f-e-1)),m===n[e]&&n[h][1]++,o-=n[e],n},t,null,0,f-1,1)):(o=Q.min(m,1<f?Q.floor((r-m)/(f-1)):r-m),l=1<f?(r-m)%(f-1):0,En(function(n,t,e){return n[e]=0===e?m:e-1<l?o+1:o,m===n[e]&&n[h][1]++,n},t,null,0,f-1,1))}else f?(t[h][0]=f,e?(t=En(function(n,t,e){return n[e]=e+1<f?1:r-f+1,n},t,null,0,f-1,1),i<0&&kn(t,t,0,0,f-1)):(o=Q.floor(r/f),l=r%f,t=En(function(n,t,e){return n[e]=i<0?0===e?r-f+1:1:o+(e<l),n},t,null,0,f-1,1))):c?c===r?(t[h][0]=1,t[0]=r,t[h][2]=1):i<0?(t[h][0]=2,t[0]=r-c,t[1]=c,t[h][2]=1+(c===t[0]?1:0)):t=e?(l=Q.floor(r/c),0<(o=r-l*c)&&o<c?(l--,o+=c,t[h][0]=l+1):t[h][0]=l+(0<o),En(function(n,t,e){return e<l?(n[e]=c,n[h][2]++):(n[e]=o,c===o&&n[h][2]++),n},t,null,0,t[h][0]-1,1)):(l=Q.floor(r/c),o=r-l*c,u=1<l?(s=Q.floor(o/(l-1)),o%(l-1)):s=0,t[h][0]=l,En(function(n,t,e){return 0<o?(n[e]=c+s,o-=s,0<u&&(n[e]++,u--,o--),c===n[e]&&n[h][2]++):(n[e]=c,n[h][2]++),n},t,null,0,t[h][0]-1,1)):t=m?(l=Q.floor(r/m),o=r%m,e?En(function(n,t,e){return n[e]=t,n[h][0]++,m===n[e]&&n[h][1]++,n},t,i<0?Dn(l,m,0).concat(o?[o]:[]):Dn(r-m,1,0).concat([m])):En(function(n,t,e){return n[e]=t,n[h][0]++,m===n[e]&&n[h][1]++,n},t,i<0?Dn(l,m,0).concat(o?[o]:[]):[m].concat(Dn(r-m,1,0)))):En(function(n,t,e){return n[e]=t,n[h][0]++,n},t,i<0?[r]:Dn(r,1,0));t=t&&t.slice(0,t[h][0])}return t=this.DUAL(t,r,n,1)},succ:function(n,t,e,r,i,u){if(null==e||null==n)return null;var l=r&&r.type?r.type:"partition",s=r&&null!=r["max="]?0|r["max="]:null,o=r&&null!=r["min="]?0|r["min="]:null,m=r&&null!=r["parts="]?0|r["parts="]:null,c=r&&r.dimension?r.dimension:1,r=r&&null!=r.order?r.order:dn;return e<=0||null!=m&&null!=s&&null!=o&&(m<=0||o<=0||s<=0||s<o||e+o<m*o+s||m*s+o<e+s)||null!=s&&null!=o&&(s<=0||o<=0||s<o||e<s||e<o||s===o&&0!=e%s||s!==o&&(e<s+o||s+o<e&&e-(s+o)<o))||null!=m&&null!=o&&(m<=0||o<=0||e<m*o)||null!=m&&null!=s&&(m<=0||s<=0||e+1<m+s||m*s<e)||null!=o&&(o<=0||e<o||o<e&&e<o+o)||null!=s&&(s<=0||e<s)||null!=m&&(m<=0||e<m)?null:("composition"===l?function(n,t,e,r,i,u,l,s){var o,m,c,f,a,h,d,g,_,v,b,p=t,y=l,x=1;if(p<=0||null!=r&&r<=0||null!=u&&u<=0||null!=i&&i<=0)return null;hn&s&&(x=-x);an&s&&(e=-e);t=x<0?(v=l-(n[y][0]||1),c=b=l-1,v):(v=0,b=n[y][0]-1,c=v,b);if(e<0)if(r)if(i&&u){if(i===u)return null;if(gn&s)n=null;else{for(o=t-x,d=n[m=t]-u,_=n[t],f=1;v<=o&&o<=b&&(u===n[o]||i<n[m]+1);)_+=n[o],f++,m=o,o-=x;if(o<v||b<o)n=null;else if(0<d)for(a=_+1-u*(f-1),1===n[y][2]&&u===n[m]&&(f-1)*i+u<_+1?(_+=n[o]-u,n[o]=u,n[y][2]++):(1===n[y][1]&&i===n[o]&&a<i?(n[o]=Q.max(n[m],n[t]),_+=i-n[o],i!==n[o]&&n[y][1]--):(i===n[o]&&n[y][1]--,_++,n[o]--),u===n[o]&&n[y][2]++),a=_-u*f;0<_&&v<=m&&m<=b;)u===n[m]&&n[y][2]--,i===n[m]&&n[y][1]--,n[m]=Q.min(i,u+a),_-=n[m],a-=n[m]-u,i===n[m]&&n[y][1]++,u===n[m]&&n[y][2]++,m+=x;else 1===n[y][2]&&u===n[m]?(n[m]=n[o],n[o]=u):1===n[y][1]&&i===n[o]&&i>n[m]+1?(n[o]=n[m],n[m]=i):(i===n[o]&&n[y][1]--,u===n[m]&&n[y][2]--,n[o]--,n[m]++,i===n[m]&&n[y][1]++,u===n[o]&&n[y][2]++)}}else if(u)if(gn&s)n=null;else if((a=n[t])<p-u*(r-1)){for(o=t-x;v<=o&&o<=b&&u===n[o];)o-=x;m=o+x,1===n[y][2]&&u===n[m]&&m===t?(n[m]=n[o],n[o]=u):(u===n[m]&&n[y][2]--,n[o]--,n[t]=u,n[m]=1+a,u===n[o]&&n[y][2]++,n[t]===u&&u!==a&&n[y][2]++)}else n=null;else if(i)if(gn&s)n=null;else{for(o=t-x,d=n[m=t]-1,_=n[t],f=1;v<=o&&o<=b&&(1===n[o]||i<n[m]+1);)_+=n[o],f++,m=o,o-=x;if(o<v||b<o)n=null;else if(0<d)for(1===n[y][1]&&i===n[o]&&_-(f-1)+1<i?(n[o]=Q.max(n[m],n[t]),_+=i-n[o],i!==n[o]&&n[y][1]--):(i===n[o]&&n[y][1]--,n[o]--,_++),g=0;0<_&&v<=m&&m<=b;)i===n[m]&&n[y][1]--,n[m]=Q.min(i,_-(f-g-1)),_-=n[m],i===n[m]&&n[y][1]++,m+=x,g++;else 1===n[y][1]&&i===n[o]&&i>n[m]+1?(n[o]=n[m],n[m]=i):(i===n[o]&&n[y][1]--,n[o]--,n[m]++,i===n[m]&&n[y][1]++)}else if(gn&s)if((a=n[c])<p-r+1){for(n[c]=1,o=c+x;v<=o&&o<=b&&1===n[o];)o+=x;n[o]--,v<=o-x&&o-x<=b&&(n[o-x]=1+a)}else n=null;else if((a=n[t])<p-r+1){for(n[t]=1,o=t;v<=o&&o<=b&&1===n[o];)o-=x;n[o]--,v<=o+x&&o+x<=b&&(n[o+x]=1+a)}else n=null;else if(gn&s)n=null;else{if(i&&u)return null;if(u)return null;if(i){for(_=0,o=t,f=n[y][0],g=0;v<=o&&o<=b&&1===n[o];)i===n[o]&&g++,o-=x,_++,f--;if(o<v||b<o)n=null;else if(1===n[y][1]&&i===n[o])if(p===i)n=null;else if(i<=_+1)for(i===n[o]&&n[y][1]--,n[o]--,_++,n[y][0]=f,n[y][1]-=g;0<_;)n[o+=x]=Q.min(i,_),n[y][0]++,i===n[o]&&n[y][1]++,_-=n[o];else if(i<n[o]+_)for(i===n[o]&&n[y][1]--,n[o]-=i-_,_=i,n[y][0]=f,n[y][1]-=g;0<_;)n[o+=x]=Q.min(i,_),n[y][0]++,i===n[o]&&n[y][1]++,_-=n[o];else{for(i===n[o]&&g++,_+=n[o],o-=x,f--;v<=o&&o<=b&&1===n[o];)i===n[o]&&g++,o-=x,_++,f--;if(o<v||b<o)n=null;else for(i===n[o]&&n[y][1]--,n[o]--,_++,n[y][0]=f,n[y][1]-=g;0<_;)n[o+=x]=Q.min(i,_),n[y][0]++,i===n[o]&&n[y][1]++,_-=n[o]}else for(i===n[o]&&n[y][1]--,n[o]--,_++,n[y][0]=f,n[y][1]-=g;0<_;)n[o+=x]=Q.min(i,_),n[y][0]++,i===n[o]&&n[y][1]++,_-=n[o]}else if(p>n[y][0]){for(o=t,_=0;v<=o&&o<=b&&1===n[o];)o-=x,_++;if(a=n[o]-1,n[o]=a,0<++_)if(v<=o+x&&o+x<=b)n[o+=x]=_,_=0,n[y][0]=x<0?l-o:o+1;else for(;0<_--;)n[o+=x]=1,n[y][0]++}else n=null}else if(r)if(gn&s)n=null;else if(i&&u){if(i===u)return null;for(f=1,o=(m=t)-x,d=i-n[m],_=n[m];v<=o&&o<=b&&(i<n[o]+1||u===n[m]);)_+=n[o],f++,m=o,o-=x;if(o<v||b<o)n=null;else if(0<d)for(a=_-1-u*(f-1),1===n[y][2]&&u===n[o]&&f<=a?(n[o]=n[t],n[t]=u,_-=n[o]-u):1===n[y][1]&&i===n[m]&&i>n[o]+1&&a<i?(n[m]=n[o],n[o]=i,_-=i-n[m]):(u===n[o]&&n[y][2]--,n[o]++,_--,i===n[o]&&n[y][1]++),o=t,a=_-u*f;v<=o&&o<=b&&0<_;)i===n[o]&&n[y][1]--,u===n[o]&&n[y][2]--,n[o]=Q.min(i,u+a),_-=n[o],a-=n[o]-u,i===n[o]&&n[y][1]++,u===n[o]&&n[y][2]++,o-=x,g++;else 1===n[y][1]&&i===n[m]&&i>n[o]+1?(n[m]=n[o],n[o]=i):(i===n[m]&&n[y][1]--,u===n[o]&&n[y][2]--,n[o]++,n[m]--,u===n[m]&&n[y][2]++,i===n[o]&&n[y][1]++)}else if(u)if(p-u*(r-1)>n[c]){for(o=t;v<=o&&o<=b&&u===n[o];)o-=x;m=o-x,1===n[y][2]&&u===n[m]?(n[m]=n[o],n[o]=u):(u===n[m]&&n[y][2]--,n[o]--,n[m]++,u===n[o]&&n[y][2]++,a=n[o],n[o]=n[t],n[t]=a)}else n=null;else if(i){for(f=1,o=(m=t)-x,d=i-n[m],_=n[m];v<=o&&o<=b&&(i&&i<n[o]+1||1===n[m]);)_+=n[o],f++,m=o,o-=x;if(o<v||b<o)n=null;else if(0<d)for(i&&1===n[y][1]&&i===n[m]&&i>n[o]+1&&_-(f-1)-1<i?(n[m]=n[o],n[o]=i,_-=i-n[m]):(n[o]++,_--,i===n[o]&&n[y][1]++),g=0,o=t;v<=o&&o<=b&&0<_;)i===n[o]&&n[y][1]--,n[o]=Q.min(i,_-(f-g-1)),_-=n[o],i===n[o]&&n[y][1]++,o-=x,g++;else 1===n[y][1]&&i===n[m]&&i>n[o]+1?(n[m]=n[o],n[o]=i):(i===n[m]&&n[y][1]--,n[o]++,n[m]--,i===n[o]&&n[y][1]++)}else if(gn&s)if(p-r+1>n[t]){for(o=c;v<=o&&o<=b&&1===n[o];)o+=x;a=n[o],n[o]=1,n[c]=a-1,v<=o+x&&o+x<=b&&n[o+x]++}else n=null;else if(p-r+1>n[c]){for(o=t;v<=o&&o<=b&&1===n[o];)o-=x;a=n[o],n[o]=1,n[t]=a-1,v<=o-x&&o-x<=b&&n[o-x]++}else n=null;else if(gn&s)n=null;else if(i){if(i===u)return null;for(h=u||1,_=n[o=t],i===n[o]&&n[y][1]--,u&&u===n[o]&&n[y][2]--,n[y][0]--,o-=x;null!=u&&v<=o&&o<=b&&_<1+u;)_+=n[o],n[y][0]--,i===n[o]&&n[y][1]--,u===n[o]&&n[y][2]--,o-=x;if(o<v||b<o)return null;if(f=n[y][0],0===n[y][1]){if(p===i)return null;for(_-=i-n[m=o],n[o]=i,n[y][1]++;h<=_;)n[o+=x]=h,_-=h,n[y][0]++,u&&n[y][2]++,i===n[o]&&n[y][1]++;null!=u&&0===n[y][2]&&(_+=n[o]-u,n[o]=u,n[y][2]++)}else{for(a=g=0;v<=o&&o<=b&&i===n[o];)g++,a+=n[o],o-=x,f--;if(o<v||b<o)return null;for(n[m=o]++,_+=a-1,n[y][0]=f,n[y][1]-=g,i===n[o]&&n[y][1]++,0===n[y][1]?_-=a=i:a=0;h<=_;)n[o+=x]=h,_-=h,n[y][0]++,u&&n[y][2]++,i===n[o]&&n[y][1]++;if(u&&0===n[y][2]&&(_+=n[o]-u,n[o]=u,n[y][2]++),0<a&&(n[o+=x]=i,n[y][0]++,n[y][1]++),0<_){for(;v<=o&&o<=b&&0<_;)(a=n[o])<i&&(u&&u===a?1===n[y][2]?(n[o]=n[o+x],n[o+x]=a):(n[y][2]--,n[o]=Q.min(i,a+_),_-=n[o]-a,i===n[o]&&n[y][1]++):(n[o]=Q.min(i,a+_),_-=n[o]-a,i===n[o]&&n[y][1]++)),o-=x;if(0<_)return null}}}else if((a=u?p-(h=u):(h=1,p))>n[c]){for(_=n[o=t],n[y][0]--,u&&u===n[o]&&n[y][2]--,o-=x,u&&u===n[o]&&n[y][2]--,n[o]++,_--;h<=_;)n[o+=x]=h,_-=h,n[y][0]++,u&&n[y][2]++;if(u&&0===n[y][2]&&(_+=n[o]-u,n[o]=u,n[y][2]++),0<_){if(u&&1===n[y][2]&&u===n[o])if(u<_){for(_+=n[o],n[y][0]--,n[y][2]--,n[o-=x]++,_--;h<=_;)n[o+=x]=h,_-=h,n[y][0]++,n[y][2]++;0<_&&(u===n[o]&&n[y][2]--,n[o]+=_)}else n[o-x]+=_;else u&&u===n[o]&&n[y][2]--,n[o]+=_;_=0}}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,y=t,x=l,q=1;if(y<=0||null!=r&&r<=0||null!=u&&u<=0||null!=i&&i<=0)return null;hn&s&&(q=-q);an&s&&(e=-e);t=q<0?(b=l-(n[x][0]||1),c=p=l-1,b):(b=0,p=n[x][0]-1,c=b,p);if(gn&s)return null;if(e<0)if(r){if(i&&u&&i===u)return null;for(h=u||1,v=y-(i||0)-(u||0),a=0<r-(g=i?1:0)-(_=u?1:0)?v%(r-g-_):0,d=Q.min(i||v,0<r-g-_?Q.floor(v/(r-g-_)):v),f=0,o=-1,m=c+g*q;b<=m-g*q&&m+_*q<=p;m+=q)h<n[m]&&(d+(f<a)<n[m]||Q.floor(v/(r-g-_-f))+(0<v%(r-g-_-f))<n[m])&&(o=m),f++,v-=n[m];if(-1===o||p<o+_*q||o-g*q<b)n=null;else{for(i===n[o]&&n[x][1]--,n[o]--,u===n[o]&&n[x][2]++,v=1,f=0,m=o+=q;b<=m-g*q&&m+_*q<=p;)f++,v+=n[m],m+=q;for(;0<f&&0<v&&b<=o-g*q&&o+_*q<=p;)f--,i===n[o]&&n[x][1]--,u===n[o]&&n[x][2]--,n[o]=Q.min(b<=o-q&&o-q<=p?n[o-q]:y,Q.max(h,v-h*f)),v-=n[o],i===n[o]&&n[x][1]++,u===n[o]&&n[x][2]++,o+=q}}else if(u?(h=u,t-=q):h=1,b<=(m=i?c+q:c)&&m<=p&&n[m]>h){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[x][1]--,a=n[o]-1,v++,n[o]=a,n[x][0]=(q<0?l-o:o+1)+(u?1:0),n[x][1]-=g,n[x][2]-=_,u===n[o]&&n[x][2]++,a<v){for(m=v%a,v=Q.floor(v/a);0<v--;)n[o+=q]=a,n[x][0]++,i===n[o]&&n[x][1]++,u===n[o]&&n[x][2]++;v=m}if(h<=v&&(n[o+=q]=v,v=0,n[x][0]++,i===n[o]&&n[x][1]++,u===n[o]&&n[x][2]++),0<v)return null;u&&(n[o+=q]=u)}else n=null;else if(r){if(i&&u&&i===u)return null;for(o=u?(h=u,t-q):(h=1,t),f=v=0;b<=o&&o<=p&&h===n[o];)v+=n[o],f++,o-=q;if(o<b||p<o)n=null;else if(i===n[o]&&n[x][1]--,u===n[o]-1&&n[x][2]++,n[o]--,v+=n[o],f++,(o-=q)<b||p<o)n=null;else{for(;b<=o&&o<=p&&(i&&i<n[o]+1||b<=o-q&&o-q<=p&&n[o-q]<n[o]+1);)v+=n[o],f++,o-=q;if(o<b||p<o)n=null;else{for(n[o]++,i===n[o]&&n[x][1]++,a=0<f?v%f:0,d=0<f?Q.floor(v/f):v,m=0;0<v;)i===n[o+=q]&&n[x][1]--,u===n[o]&&n[x][2]--,n[o]=d+(m<a),v-=n[o],i===n[o]&&n[x][1]++,u===n[o]&&n[x][2]++,m++;u&&(n[t]=u)}}}else{if(i&&u){if(i===u)return null;h=u,f=Q.floor((y-u)/i)+1,a=n[x][0]>f,m=c+q,t-=q}else u?(h=u,a=2<n[x][0]||n[c]+u<y,m=c,t-=q):m=i?(h=1,a=Q.min(i,y-i),f=Q.ceil(y/i)-1,a=n[x][0]>f+1||n[c+(f-1)*q]<a,c+q):(h=1,a=n[c]<y,c);if(b<=m&&m<=p&&a){for((v=_=g=0)<p?(o=t-q,v+=n[t],i===n[t]&&g++,u===n[t]&&_++):o=t;b<=o&&o<=p&&b<=o-q&&o-q<=p&&0<q*(o-m)&&n[o-q]===n[o];)v+=n[o],i===n[o]&&g++,u===n[o]&&_++,o-=q;if(i&&i<=n[o])return null;for(n[x][0]=(q<0?l-o:o+1)+(u?1:0),n[x][1]-=g,n[x][2]-=_,u===n[o]&&n[x][2]--,n[o]++,v--,i===n[o]&&n[x][1]++,a=v%h;h<=v;)o+=q,n[x][0]++,n[o]=h+(0<a),v-=n[o],a--,i===n[o]&&n[x][1]++,u===n[o]&&n[x][2]++;if(0<v)for(t=q<0?l-n[x][0]:n[x][0]-1,o=u?t-q:t;0<v;)i===n[o]&&n[x][1]--,u===n[o]&&n[x][2]--,a=Q.min(v,o===m?v:n[o-q]===n[o]?q*(o-m)+1<=v?1:0:n[o-q]-n[o]),n[o]+=a,v-=a,i===n[o]&&n[x][1]++,u===n[o]&&n[x][2]++,o-=q;u&&(t=q<0?l-n[x][0]:n[x][0]-1,n[t]=u)}else n=null}return n})(n,e,i=-1===i?-1:1,m,s,o,c,r)},rand:function(n,t){var e=J.Arithmetic,r=(t&&t.type&&t.type,t&&null!=t.order&&t.order,t&&null!=t["max="]?0|t["max="]:null),i=t&&null!=t["min="]?0|t["min="]:null,u=t&&null!=t["parts="]?0|t["parts="]:null,l=(t&&t.dimension&&t.dimension,e.O),s=e.I,o=null;if(0===n)o=!(null==u||0<u)||null!=r&&0!==r||null!=i&&0!==i?null:Dn(u||1,0,0);else{if(n<0||null!=u&&null!=r&&null!=i&&(u<=0||i<=0||r<=0||r<i||n+i<u*i+r||u*r+i<n+r)||null!=r&&null!=i&&(r<=0||i<=0||r<i||n<r||n<i||r===i&&0!=n%r||r!==i&&(n<r+i||r+i<n&&n-(r+i)<i))||null!=u&&null!=i&&(u<=0||i<=0||n<u*i)||null!=u&&null!=r&&(u<=0||r<=0||n+1<u+r||u*r<n)||null!=i&&(i<=0||n<i||i<n&&n<i+i)||null!=r&&(r<=0||n<r)||null!=u&&(u<=0||n<u))return null;u=t&&null!=t.count?t.count:this.count(n,t),e.gt(u,l)&&(u=e.sub(u,s),s=e.rnd(l,u),o=e.equ(l,s)?this.initial(n,t,1):e.equ(u,s)?this.initial(n,t,-1):this.unrank(s,n,t))}return this.DUAL(o,n,t,1)},randu:T.rand,rank:function(n,t,e){var r,i,u,l,s,o=J.Arithmetic,m=e&&e.type?e.type:"partition",c=e&&null!=e.order?e.order:dn,f=e&&null!=e["max="]?0|e["max="]:null,a=e&&null!=e["min="]?0|e["min="]:null,h=e&&null!=e["parts="]?0|e["parts="]:null,d=e&&e.dimension?e.dimension:1,g=o.J,_=o.O;if(n&&0===t)d+1===n.length&&(n=hn&c?n.slice(d-n[d][0],d):n.slice(0,n[d][0])),n=this.DUAL(n.slice(),t,e,-1),r=!(null==h||0<h)||null!=f&&0!==f||null!=a&&0!==a||(h||1)!==n.length||n.length!==n.filter(function(n){return 0===n}).length?g:_;else{if(!n||!n.length||t<0||null!=h&&null!=f&&null!=a&&(h<=0||a<=0||f<=0||f<a||t+a<h*a+f||h*f+a<t+f)||null!=f&&null!=a&&(f<=0||a<=0||f<a||t<f||t<a||f===a&&0!=t%f||f!==a&&(t<f+a||f+a<t&&t-(f+a)<a))||null!=h&&null!=a&&(h<=0||a<=0||t<h*a)||null!=h&&null!=f&&(h<=0||f<=0||t+1<h+f||h*f<t)||null!=a&&(a<=0||t<a||a<t&&t<a+a)||null!=f&&(f<=0||t<f)||null!=h&&(h<=0||t<h))return g;if(d+1===n.length&&(n=hn&c?n.slice(d-n[d][0],d):n.slice(0,n[d][0])),e.mindimension>n.length||e.maxdimension<n.length)return g;if(n=this.DUAL(n.slice(),t,e,-1),e=e&&null!=e.count?e.count:this.count(t,e),e=o.sub(e,1),"composition"===m){if(r=_,a&&f===a)return null!=h&&t!==h*f||0!==n.filter(function(n){return n!==f}).length?g:_;for(i=s=l=0;0<t&&i<n.length;i++){if((u=n[i])<=0||t<u||a&&u<a||f&&f<u)return g;r=o.add(r,a===u?_:le(t,u,a,f,h?h-i:null,l,s)),a===u&&l++,f===u&&s++,t-=u}if(0!==t||i!==n.length)return g;an&c&&(r=o.sub(e,r))}else{if(r=e,a){if(f===a)return null!=h&&t!==h*f||0!==n.filter(function(n){return n!==f}).length?g:_;t-=a,h&&h--}for(i=0;0<t&&i<n.length;i++){if((u=n[i])<=0||t<u||a&&u<a||f&&f<u)return g;a&&i+1===n.length||(r=o.sub(r,f&&0===i?_:re(t,u,a,f,h?h-i:null)),t-=u)}if(0!==t||i!==n.length)return g;an&c||(r=o.sub(e,r))}}return r},unrank:function(n,t,e){var r,i,u,l,s,o,m=J.Arithmetic,c=e&&e.type?e.type:"partition",f=e&&null!=e.order?e.order:dn,a=e&&null!=e["max="]?0|e["max="]:null,h=e&&null!=e["min="]?0|e["min="]:null,d=e&&null!=e["parts="]?0|e["parts="]:null,g=[],_=m.O;e&&e.dimension&&e.dimension;if(n=null==n?null:m.num(n),o=e&&null!=e.count?e.count:this.count(t,e),o=m.sub(o,1),0===t&&null!=n)g=!m.equ(_,n)||!(null==d||0<d)||null!=a&&0!==a||null!=h&&0!==h?null:Dn(d||1,0,0);else{if(null==n||m.lt(n,_)||m.gt(n,o)||t<0||null!=d&&null!=a&&null!=h&&(d<=0||h<=0||a<=0||a<h||t+h<d*h+a||d*a+h<t+a)||null!=a&&null!=h&&(a<=0||h<=0||a<h||t<a||t<h||a===h&&0!=t%a||a!==h&&(t<a+h||a+h<t&&t-(a+h)<h))||null!=d&&null!=h&&(d<=0||h<=0||t<d*h)||null!=d&&null!=a&&(d<=0||a<=0||t+1<d+a||d*a<t)||null!=h&&(h<=0||t<h||h<t&&t<h+h)||null!=a&&(a<=0||t<a)||null!=d&&(d<=0||t<d))return null;if(an&f&&(n=m.sub(o,n)),"composition"===c){if(h&&a===h&&(g=null==d||Q.floor(t/a)===d?Dn(Q.floor(t/a),a):null),g&&!g.length)for(r=l=u=0;0<t;r++){for(i=h&&0===r?t-h:t,i=a?Q.min(a,i):i;(!h||h<=i)&&1<=i&&m.gt(s=le(t,i,h,a,d?d-r:null,u,l),n);)i--;if(i<=0||h&&i<h)break;h===i&&u++,a===i&&l++,g.push(i),n=m.sub(n,s),t-=i}}else if(h&&(a===h?g=null==d||Q.floor(t/a)===d?Dn(Q.floor(t/a),a):null:(t-=h,d&&d--)),a&&(t-=a,d&&d--),g&&!g.length){for(r=0;0<t;r++){for(i=a?Q.min(a,t):t;(!h||h<=i)&&1<=i&&m.gt(s=re(t,i,h,a,d?d-r:null),n);)i--;if(i<=0||h&&i<h)break;g.push(i),n=m.sub(n,s),t-=i}h&&g.push(h),a&&g.unshift(a)}}return g=this.DUAL(g,t,e,1)},conjugate:function(n,t){return xe("composition"===t,n)},subset:function(n,t){return(-1===t?ye:pe)(n)},pack:function(n,t){return(-1===t?function(n,t){if(null==n)return null;var e,r,i,u,l,s=[],o=n.length,m=1,c=0,f="push";for(-1===t&&(m=-m,c=o-1-c,f="unshift"),e=0;e<o;e++)if(1===(l=n[m*e+c])[1])s[f](l[0]);else for(i=l[1],u=l[0],r=0;r<i;r++)s[f](u);return s}:function(n,t){if(null==n)return null;var e,r,i,u,l=[],s=n.length,o=1,m=0,c="push";for(-1===t&&(o=-o,m=s-1-m,c="unshift"),u=[i=n[m],1],e=1;e<s;e++)i===n[r=o*e+m]?u[1]++:(l[c](u),u=[i=n[r],1]);return l[c](u),l})(n)}},_update:function(){var n,t,e=this.$,r=(this.n,this.__item),i=(e&&e.type&&e.type,e&&null!=e.order?e.order:dn),u=e&&null!=e["max="]?0|e["max="]:null,l=e&&null!=e["min="]?0|e["min="]:null,e=(e&&null!=e["parts="]&&e["parts="],e.dimension),s=0,o=0;if(null!=r&&e+1!==r.length){if(n=r.length,r=r.slice(),null!=u||null!=l)for(o=s=t=0;t<n;t++)u===r[t]&&s++,l===r[t]&&o++;n<e&&(hn&i?r.unshift:r.push).apply(r,new Array(e-n)),r.push([n,s,o]),this.__item=r}return this},output:function(n){if(null==n)return null;var t=this.$,e=(this.n,null!=t["max="]&&t["max="],null!=t["min="]&&t["min="],null!=t["parts="]&&t["parts="],null!=t.order?t.order:dn),t=t.dimension;return t+1===n.length&&(n=hn&e?n.slice(t-n[t][0],t):n.slice(0,n[t][0])),T[F].output.call(this,n)}})).transpose=t.conjugate,J.SetPartition=n(T,{constructor:function n(t,e){var r,i=null;if(!Nn(this,n))return new n(t,e);(e=e||{}).type="partition",Nn(t=t||0,T)?t=(i=t).base():i=e.sub,r=null!=e["parts="]?0|e["parts="]:null,e.base=t,e.mindimension=Q.max(0,null!=r?r:1),e.maxdimension=Q.max(0,null!=r?r:t),e.dimension=e.maxdimension,e.rand=e.rand||{},e.rand.partition=1,T.call(this,"SetPartition",t,e,i?{method:e.submethod,iter:i,pos:e.subpos,cascade:e.subcascade}:null)},__static__:{C:T.C,P:T.P,T:T.T,DUAL:function(n,t,e,r){return n},count:function(n,t){t=t&&null!=t["parts="]?0|t["parts="]:null;return 0<n?null==t?me(n):t<=0?J.Arithmetic.O:te(n,t,2):J.Arithmetic.O},initial:function(r,n,i){var t=n&&null!=n.order?n.order:dn,u=n&&null!=n["parts="]?0|n["parts="]:null;return r<0||null!=u&&(u<=0||r<u)?null:(i=-1===i?-1:1,an&t&&(i=-i),(t=new Array(r+1))[r]=[r,new Array(r)],t=u?(t[r].push(Dn(u,0)),En(function(n,t,e){return t=i<0?e<=r-u?0:u-r+e:e<u?e:u-1,n[e]=t,n[r][1][e]=t,n[r][2][t]++,n},t,null,0,r-1,1)):En(function(n,t,e){return i<0?(n[e]=0,n[r][1][e]=0):(n[e]=e,n[r][1][e]=e),n},t,null,0,r-1,1))},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||t<e))return null;if(!(dn&i))return null;an&i&&(r=-r);if(m=n[t][1],c=!1,e){if(1===e||t===e)return null;if(f=n[t][2],r<0){for(u=t-1;0<u;u--)if(n[u]<=m[u-1]&&n[u]!==(u<e?u:e-1)){for(f[n[u]]--,n[u]=Q.min(e-1,n[u]+1),m[u]=Q.max(n[u],m[u]),f[n[u]]++,l=u+1;l<t;l++)f[n[l]]--,n[l]=n[0],f[n[l]]++,m[l]=m[u];for(o=t-1,s=e-1;0<s;s--)f[s]||(f[n[o]]--,f[s]++,n[o]=s,o--);c=!0;break}c||(n=null)}else{for(u=t-1;0<u;u--)if(n[u]>n[0]&&(e-t+u<n[u]||1<f[n[u]])){for(f[n[u]]--,n[u]--,m[u]=m[u-1],f[n[u]]++,l=u+1;l<t;l++)1<f[n[l]]&&(f[n[l]]--,m[l]=Q.min(e-1,m[u]+l-u),n[l]=m[l],f[n[l]]++);c=!0;break}c||(n=null)}}else if(r<0){for(u=t-1;0<u;u--)if(n[u]<=m[u-1]){for(n[u]++,m[u]=Q.max(n[u],m[u]),l=u+1;l<t;l++)n[l]=n[0],m[l]=m[u];c=!0;break}c||(n=null)}else{for(u=t-1;0<u;u--)if(n[u]>n[0]){for(n[u]--,m[u]=m[u-1],l=u+1;l<t;l++)m[l]=m[u]+l-u,n[l]=m[l];c=!0;break}c||(n=null)}return n}(n,e,r&&null!=r["parts="]?0|r["parts="]:null,i,r&&null!=r.order?r.order:dn))},rand:function(n,t){var e,r,i,u,l,s,o,m=t&&null!=t["parts="]?0|t["parts="]:null,c=J.Math.rnd,f=J.Arithmetic;if(n<0||null!=m&&(m<=0||n<m))return null;for(e=Dn(n,0),r=n,i=0;0<r;){for(o=p.Zero(),s=p.fromDec(c()),l=1;l<=r&&!(o=o.add(p(f.mul(Kt(r-1,l-1),this.count(r-l,{"parts=":m})),this.count(r,{"parts=":m})))).gte(s);)l++;for(u=r-l;u<r;u++)e[u]=i,m&&(i=(i+1)%m);i++,m&&m<=i&&(i=0),r-=l}return e=Bn(e),En(function(n,t){return n[e[t]].push(t),n},Dn(Q.max.apply(null,e)+1,function(){return[]}),null,0,n-1,1).sort(function(n,t){return n[0]-t[0]})},randu:T.rand,rank:yn,unrank:yn,conjugate:function(n,t){return null==n?null:conjugate}},output:function(e){if(null==e)return null;var n=this.$,t=this.n,r=null!=n.order?n.order:dn,r=(n&&null!=n["parts="]&&n["parts="],hn&r);return e&&t+1===e.length&&(e=En(function(n,t){return n[e[t]].push(t),n},Dn(Q.max.apply(null,e.slice(0,t))+1,function(){return[]}),null,0,t-1,1),r&&(e=e.reverse())),T[F].output.call(this,e)}}),J.CatalanWord=n(T,{constructor:function n(t,e){var r=null;if(!Nn(this,n))return new n(t,e);(e=e||{}).type="catalan",Nn(t=t||0,T)?t=(r=t).base():r=e.sub,e.base=t,e.dimension=Q.max(0,2*t),e.rand=e.rand||{},e.rand.catalan=1,e.symbols=e.symbols||["(",")"],On(e.symbols)&&(e.symbols=e.symbols.split("")),T.call(this,"CatalanWord",t,e,r?{method:e.submethod,iter:r,pos:e.subpos,cascade:e.subcascade}:null)},__static__:{C:T.C,P:T.P,T:T.T,DUAL:function(n,t,e,r){return n},count:function(n,t){return n<0?J.Arithmetic.O:oe(n)},initial:function(n,t,e){t=t&&null!=t.order?t.order:dn;return n<0?null:(e=-1===e?-1:1,an&t&&(e=-e),Dn(n,function(n){return e<0?2*n:n}))},succ:function(n,t,e,r,i){return null==e||null==n||e<=0?null:function(n,t,e,r){var i,u,l,s,o,m,c,f=t<<1;if(t<=1)return null;an&r&&(e=-e);if(e<0)if(gn&r){for(u=0;u<t&&n[u]===u;)++u;if(t<=u)n=null;else if(0<u&&2==n[u]-n[u-1])--n[u];else{for(i=--n[u],--u,--i;0<u&&u<2*i;--i,--u)n[u]=i;for(;0<i;--i)n[i]=2*i;n[0]=0}}else for(s=f,l=n[u=t-1],m=0<u?n[u-1]:1,c=l-m;;){if(1!==c){if(u<=0){n=null;break}n[u]=l-1;break}s-=2,n[u]=s,l=m,m=0<--u?n[u-1]:1,c=l-m}else if(gn&r){if(u=0,2===n[1]){for(u=2;u<t&&n[u]===2*u;)++u;t<=u&&(n=null)}if(n){for(;u+1<t&&1==n[u+1]-n[u];)++u;for(++n[u],i=0;i<u;++i)n[i]=i}}else if((l=n[u=t-1])<(s=f-2))n[u]=l+1;else{for(;s-=2,0<=--u&&s===n[u];);if(u<0)n=null;else for(o=n[u],i=u;n[i++]=++o,i<t;);}return n}(n,e,i=-1===i?-1:1,r&&null!=r.order?r.order:dn)},rand:function(t,n){var e,r,i,u,l,s,o,m;if(t<0)return null;for(e=Bn(Dn(m=2*t,function(n){return n<t?1:-1})),r=[],i=[],u=[],s=l=0;s<m;s++)o=e[s],u.push(o),0===(l+=o)&&(-1===o?r=r.concat(u):(r.push(1),i=[-1].concat(u.slice(1,-1).map(function(n){return-n})).concat(i)),u=[]);return r.concat(i).reduce(function(n,t,e){return 0<t&&n.push(e),n},[])},randu:T.rand,rank:yn,unrank:yn},output:function(t){if(null==t)return null;var n=this.$,e=this.n,r=null!=n.order?n.order:dn,i=n.symbols,r=hn&r,u=0,l=Dn(2*e,function(n){return u<t.length&&n===t[u]?(u++,i[0]):i[i.length-1]});return r&&(l=Dn(l.length,function(n){return i[0]===l[l.length-1-n]?i[i.length-1]:i[0]})),T[F].output.call(this,l)}}),e=J.LatinSquare=n({constructor:function n(t){if(!Nn(this,n))return new n(t);this.n=+(t||0),this.s=n.make(this.n)},__static__:{isLatin:function(n){return function(n){if(!n)return!1;for(var t,e,r,i=n.length,u=new Array(i),l=0;l<i;l++){if(i!==n[l].length)return!1;for(e=0;e<i;e++)u[e]=0;for(t=0;t<i;t++){if(r=n[l][t],(e=n[0].indexOf(r))<0||0<u[e])return!1;u[e]=1}for(e=0;e<i;e++)u[e]=0;for(t=0;t<i;t++){if(r=n[t][l],(e=n[0].indexOf(r))<0||0<u[e])return!1;u[e]=1}}return!0}(Nn(n,e)?n.s:n)},make:function(n){var t,e,r,i,u,l,s,o,m=new Array(n),c=J.Arithmetic.val,f=J.Arithmetic.num;if(n<=0)return null;if(s=0,1&n&&n%3)i=1,s=r=2;else if(1&n){for(o=f(n),t=1;t<n;t++)if(1===c(Nt(f(t),o))){for(e=(r=t)+1;e<n;e++)if(1===c(Nt(f(e),o))&&(s=1)===c(Nt(f((u=r)-(l=i=e)),o))&&1===c(Nt(f(r+i),o))){s=2;break}if(2===s)break}s&&(r=u,i=l)}if(s)for(t=0;t<n;t++)for(m[t]=new Array(n),e=0;e<n;e++)m[t][e]=(t*i+e*r)%n+1;else for(t=0;t<n;t++)for(m[t]=new Array(n),e=0;e<n;e++)m[t][e]=(e+t)%n+1;return m},toString:function(n){var t,e,r,i="";if(null==n)return i;for(t=n.length,e=String(t).length,r=0;r<t;r++)i+=n[r].map(function(n){return Yn(String(n),e," ")}).join(" ")+"\n";return i}},n:null,s:null,_str:null,dispose:function(){return this.n=null,this.s=null,this._str=null,this},toString:function(){return null==this._str&&(this._str=this.s?e.toString(this.s):""),this._str}}),U=J.MagicSquare=n({constructor:function n(t,e){if(!Nn(this,n))return new n(t,e);this.n=+(t||0),this.s=qn(e)?e:n.make(this.n)},__static__:{isMagic:function(n){return function(n){if(!n)return!1;for(var t,e,r=n.length,i=r*r,u=0,l=0,s=0,o=0,m=r*i+r>>>1,c=new Array(i),f=0;f<r;f++){if(r!==n[f].length)return!1;if(c[(e=n[f][0])-1]||(c[e-1]=[f,0]),e<1||i<e||f!==c[e-1][0]||0!==c[e-1][1])return!1;if(u=e,c[(e=n[0][f])-1]||(c[e-1]=[0,f]),e<1||i<e||0!==c[e-1][0]||f!==c[e-1][1])return!1;for(l=e,s+=n[f][f],o+=n[f][r-1-f],t=1;t<r;t++){if(c[(e=n[f][t])-1]||(c[e-1]=[f,t]),e<1||i<e||f!==c[e-1][0]||t!==c[e-1][1])return!1;if(u+=e,c[(e=n[t][f])-1]||(c[e-1]=[t,f]),e<1||i<e||t!==c[e-1][0]||f!==c[e-1][1])return!1;l+=e}if(u!==m||l!==m)return!1}return s===m&&o===m}(Nn(n,U)?n.s:n)},make:function n(t){if(t<=0||2===t)return null;if(1===t)return[[1]];for(var e,r,i,u,l,s,o,m,c,f,a,h,d,g=1&t,_=0==(3&t),v=t*t,b=t-g>>>1,p=new Array(t),y=0;y<t;y++)p[y]=new Array(t);if(g)for(h=t+b,d=b+g,e=y=r=0;r<v;r++,e++)t<=e&&(y++,e=0),p[y][e]=(h+e-y)%t*t+(d+y+e)%t+1;else if(_)for(e=y=r=0;r<v;r++,e++)t<=e&&(y++,e=0),p[y][e]=(y+1&3)>>>1==(e+1&3)>>>1?v-r:r+1;else{for(i=n(b),m=(o=(s=l=b*b)<<1)+l,e=y=r=0;r<l;r++,e++)b<=e&&(y++,e=0),u=i[y][e],p[y][e]=u,p[y+b][e+b]=u+s,p[y+b][e]=u+o,p[y][e+b]=u+m;for(f=c=b>>>1,e=0;e<b;e++)for(y=0;y<t;y++)!(y<c||t-f<y||y===c&&e===c)||0===y&&e===c||(a=p[y][e],p[y][e]=p[y][e+b],p[y][e+b]=a)}return p},product:function(){if(arguments.length<=1)return arguments[0];for(var n,t,e,r,i,u,l,s,o,m,c,f,a,h=arguments,d=h.length,g=h[0],_=1;_<d;){for(t=h[_++],r=(n=g).length,u=(i=t.length)*i,l=r*i,g=new Array(l),s=0;s<l;s++)g[s]=new Array(l);for(a=c=o=f=s=m=0,e=(n[m][f]-1)*u;m<r;)g[s+c][o+a]=e+t[c][a],++a>=i&&(a=0,i<=++c&&(o+=i,a=c=0,r<=++f&&(m++,s+=i,a=c=o=f=0),m<r&&f<r&&(e=(n[m][f]-1)*u)))}return g},pythagorean:yn,toString:function(n){var t,e,r,i="";if(null==n)return i;for(t=n.length,e=String(t*t).length,r=0;r<t;r++)i+=n[r].map(function(n){return Yn(String(n),e," ")}).join(" ")+"\n";return i}},n:null,s:null,_str:null,dispose:function(){return this.n=null,this.s=null,this._str=null,this},mul:function(n){return U(this.n*n.n,this.s&&n.s?U.product(this.s,n.s):null)},toString:function(){return null==this._str&&(this._str=this.s?U.toString(this.s):""),this._str}}),J}); \ No newline at end of file diff --git a/test/combinations.txt b/test/combinations.txt index 8534d26..5649066 100644 --- a/test/combinations.txt +++ b/test/combinations.txt @@ -159,28 +159,28 @@ o.order("colex,reversed") 0,1,3 0,1,2 o.order("random") -2,4,5 -1,2,5 -0,1,3 -0,1,2 -0,2,5 2,3,5 -0,4,5 -0,2,4 0,1,4 -1,3,4 +2,3,4 +1,2,3 1,2,4 +1,4,5 +0,2,5 +0,1,3 +0,3,4 +2,4,5 +1,3,4 +1,2,5 0,2,3 -0,1,5 -2,3,4 0,3,5 -1,4,5 -3,4,5 +0,1,5 +0,2,4 1,3,5 -0,3,4 -1,2,3 +3,4,5 +0,4,5 +0,1,2 o.random() -1,3,5 +1,3,4 o.order("colex").range(-5, -1) 2,3,5 0,4,5 diff --git a/test/combinations_repeats.txt b/test/combinations_repeats.txt index bd927f7..87fb751 100644 --- a/test/combinations_repeats.txt +++ b/test/combinations_repeats.txt @@ -411,64 +411,64 @@ o.order("colex,reversed") 0,0,1 0,0,0 o.order("random") -0,2,5 -1,3,3 -2,4,4 -1,1,5 -1,2,4 -2,3,5 -1,2,5 -3,4,4 -4,4,4 -5,5,5 -0,4,5 -1,1,1 -2,3,4 -2,4,5 -3,5,5 -2,2,4 -2,3,3 -3,3,4 -0,0,2 -0,2,2 -0,1,5 -4,5,5 -0,5,5 -1,2,2 -3,3,5 1,1,3 -0,1,4 -0,3,3 +0,3,5 +3,5,5 3,3,3 -0,0,1 -3,4,5 -4,4,5 -0,0,4 -0,2,4 -2,5,5 -1,1,2 +2,3,5 0,4,4 -0,2,3 +2,5,5 0,0,0 -0,1,3 -0,0,3 -1,2,3 -0,3,5 -2,2,5 -0,3,4 -0,1,2 -0,1,1 -2,2,3 -2,2,2 +0,0,1 +0,2,4 1,5,5 +1,3,5 +1,2,3 1,4,5 -1,3,4 +2,3,4 +0,0,4 1,4,4 +1,1,2 +4,5,5 +1,2,4 +0,3,3 +0,1,4 +0,0,3 +1,1,1 +0,2,3 +1,2,2 +0,5,5 +0,4,5 +0,2,5 +1,1,5 +2,4,4 0,0,5 +0,3,4 +0,1,1 +0,2,2 +2,4,5 +0,1,2 1,1,4 -1,3,5 +1,2,5 +0,0,2 +2,3,3 +0,1,5 +5,5,5 +3,3,4 +2,2,4 +0,1,3 +1,3,3 +1,3,4 +4,4,5 +4,4,4 +3,4,5 +3,4,4 +2,2,2 +2,2,5 +2,2,3 +3,3,5 o.random() -1,1,2 +1,3,3 o.order("colex").range(-5, -1) 1,5,5 2,5,5 diff --git a/test/compositions.txt b/test/compositions.txt index 8779392..9bb679a 100644 --- a/test/compositions.txt +++ b/test/compositions.txt @@ -278,7 +278,7 @@ o.order("colex,reflected") o.order("colex,reversed") 7 o.random() -3+1+1+1+1 +1+2+2+2 o.dispose() o = Abacus.Partition(8,{type:"composition"}) o.total() @@ -808,7 +808,7 @@ o.order("lex,reversed") 1+1+1+1+1+1+2 1+1+1+1+1+1+1+1 o.random() -3+1+1+3 +1+4+1+2 o.dispose() o = Abacus.Partition(10,{type:"composition"}) o.dimension() @@ -2876,5 +2876,5 @@ o.order("lex,reversed") 1+1+1+1+1+1+1+1+2 1+1+1+1+1+1+1+1+1+1 o.random() -3+4+1+2 +2+1+1+2+4 o.dispose() diff --git a/test/connected_permutations.txt b/test/connected_permutations.txt index 2add466..fce8c98 100644 --- a/test/connected_permutations.txt +++ b/test/connected_permutations.txt @@ -14,7 +14,7 @@ o.rewind() [ '1,2,0', 0, 0, '1,2,0', 'cyclic' ] [ '2,0,1', 1, 1, '2,0,1', 'cyclic' ] o.random() -1,2,0 +2,0,1 o = Abacus.Permutation(4,{type:"connected"}) o.total() 6 @@ -56,7 +56,7 @@ o.rewind() [ '1,4,0,2,3', 22, 22, '1,4,0,2,3', 'cyclic' ] [ '4,0,1,2,3', 23, 23, '4,0,1,2,3', 'cyclic' ] o.random() -4,3,0,2,1 +2,4,3,1,0 o = Abacus.Permutation(6,{type:"connected"}) o.total() 120 @@ -182,4 +182,4 @@ o.rewind() [ '1,5,0,2,3,4', 118, 118, '1,5,0,2,3,4', 'cyclic' ] [ '5,0,1,2,3,4', 119, 119, '5,0,1,2,3,4', 'cyclic' ] o.random() -5,0,3,4,1,2 +3,2,5,4,1,0 diff --git a/test/cyclic_permutations.js b/test/cyclic_permutations.js index 75a98e9..93808f2 100644 --- a/test/cyclic_permutations.js +++ b/test/cyclic_permutations.js @@ -40,7 +40,10 @@ print(o.next()); echo('default order is "lex", lexicographic-order'); echo('o.rewind()'); -print_all( o.rewind()); +print_all(o.rewind(), 1, function(item){ + var index = o.index()-(o.hasNext()?1:0), rank = Abacus.Permutation.rank(item, o.n, o.$); + return [item.join(','), index, rank, Abacus.Permutation.unrank(index, o.n, o.$).join(',')]; +}); echo('backwards'); echo('o.rewind(-1)'); diff --git a/test/cyclic_permutations.txt b/test/cyclic_permutations.txt index 6e3e38c..b84783f 100644 --- a/test/cyclic_permutations.txt +++ b/test/cyclic_permutations.txt @@ -11,10 +11,10 @@ o.next() 1,2,3,0 default order is "lex", lexicographic-order o.rewind() -0,1,2,3 -1,2,3,0 -2,3,0,1 -3,0,1,2 +[ '0,1,2,3', 0, 0, '0,1,2,3' ] +[ '1,2,3,0', 1, 1, '1,2,3,0' ] +[ '2,3,0,1', 2, 2, '2,3,0,1' ] +[ '3,0,1,2', 3, 3, '3,0,1,2' ] backwards o.rewind(-1) 3,0,1,2 @@ -49,10 +49,10 @@ o.order("colex,reversed") o.order("random") 2,3,0,1 3,0,1,2 -1,2,3,0 0,1,2,3 +1,2,3,0 o.random() -2,3,0,1 +1,2,3,0 o.order("colex").range(-3, -1) 2,3,0,1 3,0,1,2 diff --git a/test/derangements.txt b/test/derangements.txt index 518687c..1366fcc 100644 --- a/test/derangements.txt +++ b/test/derangements.txt @@ -130,17 +130,17 @@ o.order("colex,reversed") 2,3,1,0 3,2,1,0 o.order("random") +2,3,0,1 3,0,1,2 +3,2,0,1 +1,3,0,2 2,0,3,1 +1,2,3,0 +2,3,1,0 3,2,1,0 -3,0,1,2 -2,0,3,1 -3,0,1,2 -3,0,1,2 -2,0,3,1 -3,0,1,2 +1,0,3,2 o.random() -3,0,1,2 +2,3,1,0 o = Abacus.Permutation(5,{type:"derangement"}) o.total() 44 @@ -462,52 +462,52 @@ o.order("colex,reversed") 2,4,3,1,0 4,2,3,1,0 o.order("random") -4,2,3,0,1 +1,3,4,2,0 +4,3,0,2,1 2,3,4,0,1 -1,0,3,4,2 -3,2,0,4,1 -1,2,0,4,3 -4,3,1,2,0 -2,0,3,4,1 -3,4,0,1,2 -4,3,1,0,2 -1,2,4,0,3 -4,3,1,0,2 -2,0,3,4,1 -4,2,0,1,3 -3,2,0,4,1 -1,3,0,4,2 -1,2,4,0,3 -4,3,0,1,2 +1,4,0,2,3 +3,4,0,2,1 +3,2,4,1,0 4,0,1,2,3 -2,3,0,4,1 +3,2,4,0,1 3,0,1,4,2 -4,0,1,2,3 -2,4,1,0,3 -4,2,3,0,1 +1,3,4,0,2 +2,0,3,4,1 +2,4,3,0,1 +2,3,4,1,0 +4,3,1,2,0 4,3,0,1,2 +4,3,1,0,2 +4,2,3,0,1 +3,2,1,4,0 +3,0,4,2,1 +3,4,0,1,2 +1,4,3,0,2 +2,0,1,4,3 +1,3,0,4,2 +3,0,4,1,2 3,4,1,2,0 -4,0,3,2,1 4,2,3,1,0 -1,2,0,4,3 -4,2,3,0,1 +2,3,1,4,0 +2,4,3,1,0 +4,2,1,0,3 2,4,1,0,3 +4,0,3,1,2 +2,4,0,1,3 +1,4,3,2,0 +1,0,3,4,2 +1,0,4,2,3 +2,3,0,4,1 +3,2,0,4,1 +4,0,3,2,1 +1,2,0,4,3 +3,4,1,0,2 2,0,4,1,3 -3,2,4,0,1 1,2,4,0,3 -2,0,3,4,1 -1,4,3,0,2 -2,4,3,0,1 -4,3,0,2,1 -3,0,4,2,1 -3,2,4,1,0 -1,2,0,4,3 1,2,3,4,0 -4,3,0,2,1 -1,4,3,0,2 -3,0,4,2,1 +4,2,0,1,3 o.random() -4,0,3,1,2 +4,2,0,1,3 o = Abacus.Permutation(7,{type:"derangement"}) o.total() 1854 @@ -9789,1860 +9789,1860 @@ o.order("colex,reversed") 5,6,3,4,2,1,0 6,5,3,4,2,1,0 o.order("random") -2,0,6,5,3,1,4 -3,0,4,6,1,2,5 -2,4,0,1,5,6,3 -3,4,0,2,5,6,1 -4,5,3,1,0,6,2 -2,3,0,4,6,1,5 -2,6,4,5,1,0,3 -2,3,6,4,5,1,0 -4,0,1,5,3,6,2 -2,0,5,6,3,4,1 -5,3,4,0,6,2,1 -6,2,1,5,0,4,3 -4,3,6,1,5,2,0 -5,0,4,6,2,3,1 -5,4,0,2,3,6,1 -6,0,5,4,3,1,2 -5,0,6,1,2,4,3 -5,3,6,2,0,4,1 -3,0,1,6,5,4,2 -4,2,3,6,0,1,5 -3,5,0,2,6,1,4 -4,6,1,0,2,3,5 -4,5,3,1,2,6,0 -4,3,6,0,1,2,5 -5,0,3,4,6,1,2 -4,5,0,6,1,2,3 -6,4,5,2,1,0,3 -5,4,3,1,2,6,0 +5,2,6,4,3,0,1 +3,2,5,6,0,4,1 +5,4,0,6,2,3,1 +5,6,4,1,3,2,0 +6,3,5,0,1,2,4 +2,4,0,5,6,1,3 +6,0,1,2,5,4,3 +5,2,4,6,0,3,1 +6,4,1,5,2,0,3 +3,6,0,2,5,4,1 +5,3,0,1,6,4,2 +2,3,6,4,0,1,5 +3,6,1,4,2,0,5 +5,4,3,2,1,6,0 +4,5,0,6,2,1,3 +4,3,6,5,1,0,2 +1,4,6,0,5,2,3 +5,4,1,2,0,6,3 +2,5,6,1,3,4,0 +6,0,5,2,1,3,4 +2,6,1,0,3,4,5 3,6,1,5,2,4,0 -1,6,4,5,0,2,3 -4,5,0,6,1,3,2 +5,4,3,2,6,0,1 +2,6,3,4,5,1,0 +2,4,5,0,6,1,3 +1,4,3,6,0,2,5 +3,6,4,5,2,0,1 +4,3,6,5,0,2,1 +3,0,1,2,6,4,5 +4,3,6,2,0,1,5 +3,2,0,6,1,4,5 +4,5,3,0,1,6,2 +1,0,3,4,2,6,5 +6,3,4,2,5,0,1 +5,4,1,6,0,3,2 +1,4,3,6,5,2,0 +6,0,1,5,3,4,2 +5,4,6,0,3,2,1 +2,6,1,0,5,3,4 +6,2,5,1,3,0,4 +4,0,5,2,6,1,3 +1,3,5,2,6,0,4 +6,3,1,5,2,4,0 +1,3,6,5,2,4,0 +3,0,4,2,6,1,5 +6,2,5,1,0,4,3 +2,5,1,4,3,6,0 +6,5,4,2,3,0,1 +1,2,6,0,3,4,5 +2,4,3,1,6,0,5 +4,3,0,6,5,2,1 +4,5,1,6,3,2,0 +5,6,1,4,3,2,0 +6,3,0,5,1,4,2 +3,0,4,2,5,6,1 +4,0,6,1,5,2,3 +3,0,5,1,2,6,4 +5,3,1,4,6,2,0 +1,5,0,6,2,4,3 +6,4,0,2,3,1,5 +6,0,3,4,5,2,1 +6,4,0,2,5,3,1 +4,2,3,6,5,0,1 +3,2,0,4,1,6,5 +6,2,1,4,5,3,0 +1,3,5,4,6,2,0 +3,0,6,4,5,2,1 +6,2,4,0,1,3,5 +4,3,5,2,1,6,0 +5,2,0,4,3,6,1 +6,5,0,2,1,4,3 +2,0,1,6,5,3,4 +6,0,4,5,2,3,1 +5,6,3,2,1,4,0 +2,5,0,4,3,6,1 +2,4,6,5,3,1,0 +5,6,1,4,3,0,2 +1,0,6,4,5,3,2 +3,6,0,2,1,4,5 +5,6,0,1,3,4,2 +2,4,5,1,0,6,3 +1,6,3,0,5,2,4 +1,0,4,5,3,6,2 +6,0,1,4,3,2,5 +2,4,6,5,0,1,3 +3,4,5,6,1,2,0 +6,3,4,2,1,0,5 +3,2,1,6,0,4,5 +2,5,0,6,3,4,1 +1,4,3,6,2,0,5 +6,0,1,5,2,4,3 +5,4,6,0,3,1,2 +6,2,5,4,0,1,3 +2,4,3,1,5,6,0 +6,5,1,4,0,3,2 +2,3,0,4,6,1,5 +4,5,6,2,3,1,0 +2,5,6,4,3,1,0 +5,2,1,4,6,0,3 +2,5,1,6,0,3,4 +3,6,4,0,5,2,1 +4,0,3,1,2,6,5 +3,4,0,6,1,2,5 +1,6,5,4,2,0,3 +4,2,5,0,6,3,1 3,2,0,6,5,1,4 -2,3,5,6,1,0,4 -6,4,5,0,1,2,3 -1,2,6,5,3,4,0 -4,6,5,1,3,2,0 -4,2,3,5,6,1,0 -1,2,6,5,0,3,4 -1,4,0,5,2,6,3 -4,0,5,6,2,3,1 -2,0,3,6,1,4,5 -5,0,4,6,3,1,2 -5,4,0,6,3,2,1 -2,6,5,0,1,4,3 -5,0,3,4,2,6,1 -6,5,4,2,1,0,3 -3,6,0,5,2,1,4 -2,5,3,6,0,4,1 -4,0,6,5,2,1,3 -4,0,6,2,5,3,1 -3,2,6,5,1,0,4 -5,0,6,4,2,1,3 -3,2,5,6,1,0,4 -2,3,5,0,1,6,4 -6,4,3,1,5,0,2 -3,6,0,4,2,1,5 -4,6,5,0,2,1,3 -3,5,0,6,1,2,4 -3,5,4,6,1,0,2 -4,0,1,2,6,3,5 -1,5,3,0,6,4,2 -6,2,0,4,1,3,5 -5,2,3,1,0,6,4 -2,0,3,1,6,4,5 -4,5,6,1,2,0,3 -5,6,1,0,3,4,2 -3,0,6,2,5,1,4 -6,4,3,2,0,1,5 -6,0,1,4,5,3,2 -1,4,0,2,6,3,5 -1,6,5,0,2,4,3 -5,4,0,1,6,3,2 -4,5,6,2,1,0,3 -1,4,6,0,5,2,3 -5,3,1,4,2,6,0 -2,6,3,5,0,4,1 -4,0,1,5,6,3,2 -5,0,3,1,2,6,4 -3,2,5,0,6,4,1 -6,4,1,5,3,0,2 -4,2,0,5,6,1,3 -3,5,0,4,2,6,1 -2,3,0,4,6,1,5 -2,4,1,5,0,6,3 -5,3,4,1,6,0,2 -4,0,5,6,1,2,3 -3,5,0,1,6,4,2 -1,6,0,5,3,2,4 -6,3,1,5,0,2,4 -5,0,6,1,3,2,4 -5,0,6,4,1,3,2 -6,0,1,5,2,4,3 -3,6,1,5,0,2,4 -1,0,3,2,6,4,5 -1,0,4,6,5,2,3 +1,2,3,6,5,0,4 +2,5,4,6,3,0,1 +4,0,1,5,3,6,2 +5,0,4,6,1,2,3 +3,0,6,1,2,4,5 +2,5,6,4,1,3,0 +6,0,4,5,1,2,3 +2,0,3,6,5,1,4 +1,4,3,5,2,6,0 +4,5,6,2,3,0,1 +5,3,0,6,2,4,1 +2,5,4,6,1,0,3 +2,4,6,0,3,1,5 +6,4,0,2,5,1,3 +2,6,1,5,0,3,4 +5,6,1,0,3,2,4 +3,4,0,5,2,6,1 +4,2,0,6,3,1,5 +5,2,0,4,1,6,3 +6,2,3,1,5,0,4 +1,5,3,4,6,2,0 +6,3,4,2,0,1,5 +1,0,4,5,2,6,3 +2,6,5,4,0,1,3 +3,4,5,6,0,2,1 +5,3,0,2,6,4,1 +1,5,3,6,2,4,0 +2,6,5,4,1,0,3 +1,2,3,5,6,4,0 +4,6,0,5,2,1,3 +4,5,1,2,6,3,0 +2,0,6,4,3,1,5 6,0,3,4,5,1,2 -5,0,4,1,6,3,2 -2,5,6,0,3,4,1 -3,5,6,0,2,1,4 -6,4,5,0,2,1,3 +5,6,3,0,1,2,4 +3,0,6,4,5,1,2 +6,0,3,2,5,4,1 +6,2,5,4,3,1,0 +4,3,0,5,6,2,1 +3,5,4,0,1,6,2 +2,6,0,5,1,4,3 +6,3,1,5,2,0,4 +3,5,6,1,0,4,2 +4,2,0,5,1,6,3 +1,6,5,2,3,4,0 +5,6,1,0,2,4,3 +6,0,4,1,5,2,3 +1,0,4,6,2,3,5 4,3,5,0,6,2,1 -5,6,4,1,0,2,3 -5,2,4,6,0,3,1 -2,3,5,6,1,0,4 -5,4,3,2,6,1,0 -4,5,6,2,3,0,1 -6,0,1,5,3,2,4 -1,6,5,4,3,0,2 -1,4,6,5,2,3,0 +5,4,6,1,3,2,0 +3,0,5,6,2,1,4 +2,0,3,5,6,4,1 +4,2,6,5,3,0,1 +4,2,5,6,3,0,1 +5,3,4,1,6,2,0 +1,6,4,5,2,0,3 +4,2,5,0,6,1,3 +1,2,3,6,0,4,5 +4,2,3,6,5,1,0 +5,4,6,1,0,3,2 +1,6,3,4,5,2,0 +3,6,5,0,2,1,4 +2,5,1,6,0,4,3 +5,3,4,6,2,1,0 +4,3,6,0,1,2,5 +5,0,3,1,2,6,4 +3,5,4,6,0,1,2 +3,2,6,1,5,4,0 +5,4,3,1,0,6,2 +1,5,6,0,3,2,4 +3,4,1,5,6,2,0 +1,3,0,6,2,4,5 +3,6,5,1,0,4,2 +5,4,6,1,0,2,3 +1,2,6,0,5,4,3 +1,0,5,2,6,3,4 +2,3,1,5,6,4,0 +3,4,1,0,6,2,5 +4,0,5,6,1,3,2 +3,6,5,1,0,2,4 +5,4,1,2,6,0,3 +2,3,1,5,6,0,4 +1,6,0,5,3,4,2 +5,0,4,6,3,2,1 +2,0,3,6,1,4,5 +1,5,6,4,0,2,3 +3,5,6,4,0,2,1 +3,6,4,5,2,1,0 +4,5,3,1,0,6,2 +6,3,0,5,2,1,4 +1,3,0,4,6,2,5 +5,2,3,0,6,1,4 +2,6,0,5,3,1,4 +1,2,5,6,0,3,4 +6,2,0,4,1,3,5 +1,3,5,4,0,6,2 +3,0,4,5,1,6,2 +1,2,6,4,0,3,5 +1,6,5,0,2,4,3 +6,3,5,1,2,0,4 +5,3,0,1,6,2,4 +6,5,4,2,1,0,3 +1,3,6,0,2,4,5 +5,2,3,1,0,6,4 +6,2,5,1,0,3,4 +6,4,1,0,5,2,3 3,0,1,6,2,4,5 -4,0,5,6,3,1,2 -6,2,4,5,0,3,1 -3,5,0,6,2,4,1 -5,4,0,6,2,3,1 -3,4,0,1,5,6,2 -1,6,3,4,2,0,5 -6,5,4,1,2,0,3 -3,6,4,0,5,1,2 -1,0,5,2,6,4,3 +2,6,5,0,1,3,4 +4,6,5,1,0,3,2 +5,4,1,0,6,2,3 +3,2,5,6,1,0,4 +4,2,3,5,6,1,0 +1,4,0,2,3,6,5 +2,6,4,5,0,1,3 +2,5,3,4,6,0,1 +1,6,3,5,2,0,4 +2,5,3,1,6,0,4 +3,5,6,1,0,2,4 +2,5,3,4,0,6,1 +3,0,4,5,6,1,2 +2,5,6,4,0,1,3 +2,6,0,5,3,4,1 +3,5,6,1,2,0,4 5,2,3,6,0,4,1 -6,2,3,4,1,0,5 -4,0,6,2,5,1,3 -5,3,0,6,1,2,4 -2,5,0,1,3,6,4 -3,5,1,4,2,6,0 -5,2,0,1,3,6,4 -6,5,4,0,3,1,2 +6,3,5,2,0,4,1 +3,4,6,0,2,1,5 +6,2,0,5,3,1,4 +2,5,6,0,3,4,1 +5,3,6,0,1,4,2 +1,4,3,0,2,6,5 +2,0,3,5,1,6,4 +1,2,6,5,0,3,4 +5,3,0,2,1,6,4 +3,6,1,5,2,0,4 3,0,6,2,1,4,5 -1,3,5,2,0,6,4 -2,0,4,6,5,3,1 -2,6,5,1,3,4,0 -1,3,6,4,2,0,5 -6,3,5,4,1,2,0 -2,5,4,0,6,3,1 -4,0,3,1,5,6,2 -2,6,5,0,1,4,3 -1,2,5,6,0,4,3 -5,4,0,2,1,6,3 -2,5,4,6,3,0,1 -6,0,5,4,2,1,3 -3,0,5,6,2,1,4 -4,5,6,1,0,2,3 -4,5,6,1,0,2,3 -5,3,1,2,0,6,4 -1,6,3,4,5,2,0 -3,6,1,0,5,2,4 -6,3,1,0,5,2,4 -5,6,4,0,1,2,3 -5,4,6,0,3,2,1 -6,2,4,5,1,0,3 -6,0,3,4,1,2,5 -1,4,6,5,3,0,2 -3,4,6,5,1,0,2 -3,2,4,0,5,6,1 -2,3,5,4,6,1,0 -1,0,3,2,5,6,4 -4,2,3,1,5,6,0 -2,6,5,0,3,1,4 +1,0,6,4,2,3,5 +5,0,3,6,2,1,4 +1,4,0,6,3,2,5 +3,2,0,1,6,4,5 +2,5,1,0,6,3,4 +1,5,0,2,3,6,4 +3,0,1,5,2,6,4 +2,6,3,4,5,0,1 +4,0,5,6,2,3,1 +1,6,3,5,2,4,0 +5,0,4,2,6,3,1 +1,6,4,0,5,3,2 +3,5,6,0,1,2,4 +4,5,0,6,3,1,2 +3,5,6,4,1,0,2 +3,5,1,6,2,4,0 +3,6,5,2,0,1,4 4,5,0,2,3,6,1 -4,5,3,0,2,6,1 -6,2,0,4,3,1,5 -3,4,5,6,0,1,2 -5,0,1,2,3,6,4 -3,6,1,5,2,4,0 -2,3,5,1,0,6,4 -2,4,3,6,5,1,0 -5,4,1,6,2,0,3 -4,3,0,5,6,2,1 -3,6,4,0,5,1,2 -2,0,3,5,1,6,4 -4,5,6,0,3,2,1 -6,2,5,4,3,0,1 -3,0,6,5,1,2,4 -1,3,6,5,2,4,0 -6,0,5,1,3,4,2 -5,6,3,0,1,4,2 -4,6,3,2,5,0,1 -4,2,6,1,3,0,5 -5,2,0,4,1,6,3 -1,5,0,4,2,6,3 -5,0,4,1,6,2,3 -5,6,1,2,0,4,3 -6,5,0,2,1,3,4 -4,5,3,6,2,0,1 -1,0,4,5,6,2,3 -2,5,3,0,6,4,1 -5,0,3,2,6,4,1 -5,4,1,6,0,2,3 -5,0,1,2,3,6,4 -6,0,3,2,5,4,1 -2,0,5,6,1,4,3 -1,0,5,4,3,6,2 -6,5,1,2,3,4,0 -2,0,5,6,3,4,1 -5,2,0,6,3,4,1 -5,4,3,6,2,0,1 -2,3,6,4,1,0,5 -5,6,0,1,3,4,2 -1,2,6,0,3,4,5 -4,5,3,1,2,6,0 -3,6,0,2,1,4,5 -5,6,4,1,3,0,2 -3,5,0,1,2,6,4 -2,0,5,1,3,6,4 -5,4,0,1,3,6,2 -3,5,0,6,2,1,4 -3,0,6,2,1,4,5 -6,2,0,1,3,4,5 -6,0,5,1,2,3,4 +6,5,3,4,1,0,2 2,0,6,1,5,4,3 -5,4,1,2,6,3,0 -5,0,1,2,6,4,3 -3,0,4,5,6,1,2 -5,0,1,4,6,3,2 -5,2,4,1,3,6,0 -4,2,6,0,1,3,5 -5,4,6,1,0,2,3 -1,0,6,5,2,3,4 -6,0,4,1,5,3,2 -4,0,3,1,6,2,5 -6,5,0,4,2,3,1 +6,5,3,4,0,1,2 +5,4,0,2,3,6,1 +3,2,5,4,0,6,1 +4,5,0,2,6,1,3 +3,4,1,2,0,6,5 +5,6,0,4,1,3,2 +4,3,1,2,5,6,0 +4,0,1,6,2,3,5 +2,6,3,1,5,4,0 +2,0,1,5,6,3,4 +3,2,1,4,0,6,5 +3,6,4,1,0,2,5 +3,0,6,5,2,1,4 5,3,6,4,2,1,0 -1,0,4,5,2,6,3 -6,0,3,2,5,1,4 -2,0,6,5,1,4,3 -5,2,4,1,6,0,3 -2,3,1,0,6,4,5 +2,4,5,0,1,6,3 +6,0,1,2,3,4,5 +6,3,5,0,2,4,1 +5,3,1,4,0,6,2 +1,6,5,4,0,2,3 +4,0,6,5,2,1,3 +5,0,3,6,2,4,1 +4,2,6,5,3,1,0 +5,6,0,1,2,3,4 +5,2,4,6,1,3,0 +1,6,3,0,5,4,2 +4,3,6,0,2,1,5 +4,6,1,5,2,3,0 +3,5,6,4,1,2,0 +3,2,4,1,0,6,5 +2,6,0,4,3,1,5 +2,3,5,4,1,6,0 +2,5,4,6,0,1,3 +5,4,3,1,2,6,0 3,0,5,6,1,4,2 -6,0,3,4,2,1,5 -4,2,6,1,5,3,0 -4,3,5,0,1,6,2 -1,3,5,6,0,4,2 -6,0,4,2,1,3,5 +3,6,4,0,2,1,5 +5,2,6,1,3,0,4 +5,3,0,4,2,6,1 +4,0,6,2,3,1,5 +2,5,3,1,0,6,4 +6,0,5,4,2,3,1 +5,6,3,1,0,4,2 +4,6,0,5,1,3,2 +1,2,6,4,3,0,5 +1,2,0,4,6,3,5 +4,2,6,5,1,0,3 +4,5,0,6,1,3,2 +4,0,5,2,6,3,1 +2,5,3,4,1,6,0 +5,6,1,2,0,3,4 +4,0,3,5,1,6,2 +2,6,3,5,1,0,4 +3,5,6,0,1,4,2 +5,3,0,6,1,4,2 +6,5,4,2,0,3,1 +6,0,3,5,1,2,4 +3,4,0,2,1,6,5 +5,6,4,1,2,0,3 +3,6,4,2,5,0,1 +3,5,6,4,0,1,2 +3,6,1,4,5,2,0 +3,4,0,5,6,1,2 +4,2,6,1,5,0,3 +5,4,0,1,2,6,3 +3,4,6,1,2,0,5 +5,0,6,2,1,3,4 +6,5,1,0,3,4,2 +1,6,5,4,2,3,0 +3,6,0,4,2,1,5 +2,4,6,0,1,3,5 +4,6,3,5,1,0,2 +3,2,0,4,5,6,1 +6,5,1,4,2,0,3 +6,2,3,4,5,0,1 +5,4,1,0,3,6,2 +6,4,5,2,1,3,0 +3,5,4,6,2,1,0 +5,4,3,0,1,6,2 +5,2,6,4,0,3,1 +3,6,5,2,0,4,1 +5,2,6,1,3,4,0 +2,6,0,4,1,3,5 +2,6,0,1,5,4,3 +6,5,1,4,2,3,0 +6,3,0,1,5,4,2 +4,3,1,0,6,2,5 +5,4,6,1,3,0,2 +1,4,5,2,6,3,0 +4,0,5,1,6,3,2 +5,0,3,1,6,2,4 +2,5,4,1,6,0,3 +6,0,5,1,3,4,2 +1,5,6,2,0,3,4 +2,5,1,0,3,6,4 +6,2,1,4,5,0,3 +6,2,5,1,3,4,0 +2,3,4,0,5,6,1 +4,2,5,6,3,1,0 +2,5,0,4,6,3,1 +2,3,6,4,1,0,5 +1,6,5,2,3,0,4 +1,6,0,4,5,2,3 +1,6,4,5,3,0,2 +5,0,6,1,3,4,2 +6,0,4,1,2,3,5 +2,3,0,6,1,4,5 +3,5,4,2,6,0,1 +5,0,3,2,6,4,1 +3,5,6,4,2,1,0 +1,2,5,0,6,4,3 +6,3,0,5,2,4,1 +5,2,6,4,1,0,3 +3,2,6,1,5,0,4 +1,4,3,2,0,6,5 +6,3,5,4,0,1,2 +6,3,5,4,0,2,1 +5,6,4,0,3,1,2 +5,3,1,6,0,2,4 +5,4,6,2,3,1,0 +1,0,4,5,6,3,2 +1,3,0,6,5,4,2 +3,2,0,1,5,6,4 +4,6,3,5,0,1,2 +5,4,0,2,1,6,3 +6,5,3,4,0,2,1 +1,6,4,5,0,2,3 +3,2,6,4,5,0,1 +1,6,0,5,2,3,4 +5,6,4,2,1,0,3 +5,4,1,0,6,3,2 +6,2,0,5,1,4,3 +6,2,0,1,5,4,3 +4,0,1,6,3,2,5 +6,4,5,0,1,3,2 +2,0,3,6,5,4,1 +5,2,6,4,0,1,3 +1,5,3,4,2,6,0 +6,3,4,1,5,2,0 +4,3,6,0,5,1,2 +5,4,1,2,3,6,0 +1,3,5,2,0,6,4 +4,3,6,2,5,1,0 +6,5,3,4,2,0,1 +6,4,0,1,3,2,5 +6,3,5,4,1,0,2 +2,0,5,6,1,4,3 +2,5,3,1,6,4,0 +4,2,1,5,6,3,0 +3,6,4,2,5,1,0 +2,4,1,5,6,0,3 +2,4,5,0,3,6,1 +3,5,1,6,2,0,4 +6,5,4,1,2,3,0 +3,6,5,2,1,0,4 3,4,0,5,1,6,2 -1,0,5,4,3,6,2 -4,5,0,1,2,6,3 -2,3,6,1,0,4,5 +6,0,3,1,2,4,5 +2,4,6,0,5,1,3 +3,5,4,2,1,6,0 +5,4,0,1,6,3,2 +5,4,3,1,6,0,2 +4,2,0,5,3,6,1 +1,4,0,6,5,3,2 +4,5,3,6,1,2,0 +6,3,0,5,1,2,4 +6,0,3,5,2,1,4 +2,4,5,1,3,6,0 +6,0,4,5,3,1,2 4,0,6,2,5,1,3 -2,0,3,4,1,6,5 -3,4,1,6,5,0,2 -3,6,0,5,1,4,2 -5,6,0,2,1,4,3 -6,5,1,4,0,2,3 -3,0,4,6,1,2,5 -3,5,4,2,0,6,1 -3,6,4,0,1,2,5 -6,4,0,2,3,1,5 -3,2,1,4,0,6,5 -6,0,3,4,5,1,2 -4,5,6,2,1,0,3 -5,4,3,6,2,0,1 -4,6,5,2,0,1,3 -1,4,0,5,3,6,2 -3,0,1,6,5,2,4 -5,0,6,2,1,4,3 -6,2,4,5,1,3,0 -3,0,4,6,1,2,5 -4,6,5,0,1,3,2 -4,3,0,6,5,2,1 -5,2,4,0,6,3,1 -1,3,6,4,5,0,2 -6,4,3,1,5,2,0 -1,3,5,4,0,6,2 -5,0,1,6,3,4,2 -3,0,6,5,2,4,1 -2,3,1,0,6,4,5 -4,5,3,6,2,0,1 -3,0,1,6,5,2,4 -3,0,6,4,5,1,2 -5,0,1,2,3,6,4 -1,0,5,4,2,6,3 -6,3,4,2,5,0,1 -5,4,0,6,2,3,1 -4,5,6,2,3,0,1 -3,4,0,5,2,6,1 -6,2,5,0,1,4,3 -1,6,3,0,5,2,4 -4,2,3,0,6,1,5 -4,2,1,0,6,3,5 -3,0,4,5,1,6,2 -1,0,5,4,6,3,2 -5,0,6,4,3,2,1 -3,5,0,6,1,4,2 -2,0,4,1,5,6,3 -4,3,0,5,1,6,2 -3,0,1,2,5,6,4 -5,0,3,2,6,4,1 -1,3,5,4,2,6,0 -3,4,1,6,2,0,5 -1,2,6,5,3,0,4 -3,5,0,2,1,6,4 -2,0,3,5,1,6,4 -5,3,6,0,2,1,4 -5,6,1,0,2,4,3 -2,5,3,6,0,4,1 -1,0,3,2,5,6,4 -3,2,6,4,1,0,5 -6,4,0,5,2,1,3 -4,2,5,6,3,1,0 -1,4,3,0,6,2,5 -6,3,0,4,5,1,2 -4,6,3,0,5,2,1 -4,2,6,0,5,1,3 -5,4,1,2,6,3,0 -4,3,5,6,2,1,0 -6,0,1,5,2,3,4 -6,0,5,1,3,4,2 -2,3,5,6,0,1,4 -3,6,1,0,5,2,4 -4,5,3,1,6,2,0 -1,5,0,4,6,3,2 -6,3,0,1,5,2,4 -5,6,1,4,0,2,3 -5,2,6,4,1,3,0 -6,3,4,1,5,0,2 -3,6,4,5,0,2,1 -1,0,3,4,5,6,2 -5,3,6,0,1,2,4 -5,6,3,4,2,1,0 -3,5,0,1,6,2,4 -2,0,5,6,3,1,4 -3,2,5,1,6,4,0 -4,6,0,2,1,3,5 -4,2,6,1,3,0,5 -1,6,3,5,2,0,4 -6,0,1,2,3,4,5 -2,5,0,6,1,3,4 -5,4,3,0,6,2,1 -5,3,1,2,0,6,4 -3,4,6,1,0,2,5 -5,0,4,1,3,6,2 -2,4,3,6,5,1,0 -3,2,0,5,1,6,4 -3,2,6,0,1,4,5 -4,2,6,0,3,1,5 -1,6,4,0,5,3,2 -1,4,5,2,0,6,3 -3,5,4,1,6,2,0 -6,0,3,4,1,2,5 -4,0,6,5,2,3,1 -5,0,6,4,1,2,3 -3,0,6,5,1,2,4 -2,3,0,1,5,6,4 -5,3,1,6,0,2,4 -6,2,0,1,5,3,4 -3,0,5,6,2,4,1 -6,0,5,1,3,4,2 -6,0,5,2,3,4,1 -5,0,6,4,2,3,1 -3,6,1,5,0,2,4 -6,2,5,4,3,0,1 -3,5,6,2,0,4,1 -6,0,1,4,2,3,5 -3,6,0,5,1,4,2 -3,4,5,0,6,1,2 -1,6,5,0,2,4,3 -4,2,0,5,1,6,3 -6,2,0,5,1,4,3 -2,6,0,4,5,1,3 -1,0,4,6,3,2,5 -2,4,6,1,5,0,3 -4,0,6,2,5,3,1 -6,3,0,4,1,2,5 -1,3,6,0,5,4,2 -4,6,0,5,3,2,1 -5,0,6,1,3,2,4 -1,0,4,5,6,2,3 -5,0,3,1,6,4,2 -4,5,6,0,1,2,3 -3,0,1,4,6,2,5 -6,0,4,2,5,3,1 -3,6,4,1,5,0,2 -5,0,1,4,3,6,2 -4,0,6,2,5,3,1 -4,6,5,2,1,0,3 -6,0,3,1,2,4,5 -5,0,3,6,1,4,2 -2,0,6,4,5,1,3 -4,6,0,5,3,1,2 -6,0,3,1,2,4,5 -1,2,5,6,3,0,4 -4,3,6,5,2,1,0 -6,0,5,4,1,3,2 -5,0,3,1,6,2,4 -2,6,3,1,5,4,0 -6,2,3,5,1,4,0 -5,0,3,6,1,2,4 -4,2,0,5,6,1,3 -1,3,5,2,6,4,0 -6,5,1,4,2,0,3 -5,4,1,6,3,0,2 -6,4,3,5,0,2,1 -4,3,5,0,2,6,1 -3,5,6,4,2,0,1 -5,0,4,6,2,3,1 -6,4,0,2,5,3,1 -3,0,1,4,5,6,2 -5,4,3,6,1,0,2 -2,4,3,0,1,6,5 -5,6,3,4,1,0,2 -4,6,1,0,5,2,3 -2,6,3,1,5,0,4 -1,0,4,5,2,6,3 -6,4,3,5,2,1,0 -5,2,6,4,0,1,3 -4,0,6,2,3,1,5 -2,3,5,1,6,4,0 -4,0,1,5,6,2,3 -3,6,5,0,2,1,4 -6,0,1,2,3,4,5 -3,0,5,4,6,1,2 -6,5,1,0,3,2,4 -4,0,5,2,3,6,1 -6,5,0,2,1,3,4 -6,0,1,4,2,3,5 -4,5,0,1,2,6,3 -4,5,1,2,6,0,3 -1,3,6,0,2,4,5 -3,4,5,0,6,1,2 -5,4,1,0,6,2,3 -4,0,6,5,2,3,1 -4,0,6,1,5,2,3 -5,3,6,2,1,4,0 -3,6,0,5,2,4,1 -4,0,6,5,3,1,2 -5,2,6,0,3,4,1 -3,2,0,4,1,6,5 -4,6,1,2,0,3,5 -5,0,6,2,3,4,1 -4,0,1,5,2,6,3 -1,0,3,5,6,4,2 -2,5,1,4,6,0,3 -1,0,5,6,3,4,2 -5,6,1,4,2,0,3 -4,6,0,2,1,3,5 -6,4,1,0,2,3,5 -2,6,4,5,3,1,0 -6,2,5,0,3,1,4 -6,4,3,5,2,0,1 -3,6,4,2,1,0,5 -3,4,1,2,0,6,5 -4,2,0,6,3,1,5 -5,2,3,6,1,4,0 -6,5,0,1,3,2,4 -4,0,3,5,1,6,2 -2,5,6,0,3,4,1 -6,4,5,2,0,1,3 -4,6,0,2,5,1,3 -3,2,0,5,6,4,1 -2,0,3,5,6,4,1 -2,4,6,1,3,0,5 -4,0,6,2,3,1,5 -6,0,5,4,1,3,2 -2,0,3,4,1,6,5 -6,3,0,4,5,2,1 -3,0,4,5,6,1,2 -5,3,4,0,6,2,1 -3,6,5,4,0,2,1 -6,5,1,4,3,2,0 -4,5,6,0,1,2,3 -3,0,5,2,6,1,4 -2,4,0,5,6,1,3 -2,5,0,4,6,3,1 -5,2,1,6,3,0,4 -6,3,0,4,5,2,1 -6,3,4,2,5,1,0 -6,3,1,0,5,2,4 -6,3,4,2,1,0,5 -6,3,4,2,5,1,0 -2,0,3,6,5,1,4 -4,3,6,0,5,2,1 -5,6,3,4,0,2,1 -4,0,3,2,1,6,5 -3,0,6,2,5,4,1 -2,6,3,4,5,1,0 -4,2,0,6,1,3,5 -2,6,0,5,1,4,3 -3,4,0,2,6,1,5 -2,0,4,1,5,6,3 -3,2,4,5,1,6,0 -2,0,6,1,5,3,4 -5,0,4,1,2,6,3 -6,0,5,4,1,2,3 -6,4,3,1,2,0,5 -4,5,6,1,2,3,0 -1,6,0,4,3,2,5 -1,2,6,0,3,4,5 -2,4,6,0,3,1,5 -6,0,1,2,3,4,5 -3,2,6,0,5,1,4 -1,0,5,6,3,4,2 -3,0,5,1,6,4,2 -4,0,6,2,3,1,5 -2,3,5,1,6,0,4 -5,3,6,2,1,4,0 -4,6,3,2,5,0,1 -4,6,1,2,0,3,5 -6,2,3,5,0,1,4 -2,0,3,5,1,6,4 -5,4,0,1,2,6,3 -3,5,0,4,6,2,1 -1,0,4,2,6,3,5 -2,3,6,5,1,0,4 -2,0,3,4,6,1,5 -4,6,0,1,3,2,5 -5,6,1,4,2,3,0 -6,3,5,0,2,1,4 -6,4,5,1,2,3,0 -2,3,5,4,6,1,0 -3,0,6,4,5,2,1 -3,0,4,5,6,2,1 -3,0,6,4,5,2,1 -1,5,4,0,6,3,2 -2,0,4,5,6,1,3 -4,6,3,5,2,1,0 -4,5,1,0,2,6,3 -1,5,4,2,6,3,0 -2,0,4,5,6,3,1 -4,0,3,2,1,6,5 -5,6,3,2,0,4,1 -3,4,5,1,2,6,0 -6,0,1,2,5,4,3 -2,3,0,5,1,6,4 -4,6,3,5,2,1,0 -3,0,5,6,2,4,1 -2,3,5,0,6,4,1 -3,2,0,5,6,4,1 -4,3,0,5,2,6,1 -5,6,0,2,3,1,4 -3,6,0,5,1,2,4 -6,3,1,5,2,0,4 -2,3,5,0,6,4,1 -5,0,4,2,3,6,1 -6,0,3,4,5,1,2 -4,0,5,6,3,1,2 -3,4,5,2,0,6,1 -1,6,5,2,0,4,3 -6,4,0,5,1,2,3 -5,2,1,6,3,0,4 -2,0,1,5,3,6,4 -3,5,1,2,0,6,4 -5,2,3,4,6,0,1 -5,2,6,1,0,3,4 -2,0,4,5,6,1,3 -2,0,5,6,1,4,3 -5,2,4,0,6,3,1 -5,2,3,1,0,6,4 -4,6,3,5,0,2,1 -5,3,6,0,1,2,4 -6,0,3,4,5,2,1 -4,3,5,0,2,6,1 -5,0,1,4,6,3,2 -4,5,0,6,3,2,1 -5,2,1,0,3,6,4 -6,0,4,1,2,3,5 -5,0,6,1,3,2,4 -4,2,6,1,5,3,0 -2,0,4,1,3,6,5 -3,0,1,5,6,4,2 -6,5,3,2,0,1,4 -5,0,6,1,2,3,4 -6,0,1,2,3,4,5 -4,0,6,1,3,2,5 -5,2,0,1,3,6,4 -5,0,1,6,2,3,4 -3,5,6,0,1,4,2 -6,4,0,1,2,3,5 -1,3,5,2,0,6,4 -5,0,1,6,3,2,4 -4,2,6,1,5,3,0 -6,2,1,4,5,3,0 -3,6,0,1,5,4,2 -2,6,4,5,0,1,3 -5,3,6,2,0,1,4 -3,5,0,6,1,4,2 -3,6,0,4,5,2,1 -2,0,3,6,5,4,1 -6,5,1,2,0,3,4 -3,2,1,5,0,6,4 -6,0,1,5,3,2,4 -1,2,6,0,3,4,5 -4,6,1,0,5,3,2 -3,0,6,2,5,1,4 -3,5,1,6,2,0,4 -6,4,3,1,2,0,5 -1,5,4,6,2,0,3 -3,0,4,6,5,1,2 -2,4,0,1,6,3,5 -1,5,3,2,0,6,4 -2,5,4,6,0,3,1 -3,0,5,4,6,1,2 -4,6,3,0,2,1,5 -2,4,3,1,6,0,5 -3,4,0,1,2,6,5 -2,5,4,1,6,0,3 -3,4,5,1,6,0,2 -3,0,1,5,6,4,2 -2,0,3,5,6,4,1 -1,0,6,2,5,3,4 -1,0,3,4,6,2,5 -5,4,0,6,2,3,1 -1,2,0,5,6,3,4 -5,0,4,6,2,3,1 -2,5,0,1,6,3,4 -5,3,0,1,6,4,2 -3,2,0,4,6,1,5 -2,3,0,1,6,4,5 -2,0,3,4,5,6,1 -3,6,0,2,5,1,4 -5,4,3,2,6,0,1 -1,3,0,6,5,2,4 -2,6,5,0,1,4,3 -6,2,3,1,0,4,5 -3,4,6,5,2,1,0 -2,6,1,0,5,3,4 -3,6,5,4,1,0,2 -5,0,6,4,2,3,1 -3,0,5,6,1,2,4 -2,6,5,0,3,1,4 -6,0,5,2,1,3,4 -4,6,5,2,3,0,1 -2,6,5,4,3,0,1 -2,0,4,1,6,3,5 -3,0,4,6,2,1,5 -3,0,1,6,2,4,5 -4,0,5,6,3,1,2 -5,6,0,2,3,1,4 -3,5,6,4,2,1,0 -5,3,0,2,1,6,4 -2,6,3,0,5,1,4 -3,0,6,2,1,4,5 -1,6,4,2,5,3,0 -4,0,5,1,6,3,2 -1,6,5,4,3,0,2 -4,5,3,2,6,0,1 -4,2,0,1,6,3,5 -6,5,0,1,3,2,4 -4,3,1,0,6,2,5 -6,4,3,1,5,2,0 -2,6,3,4,5,1,0 -2,0,6,1,3,4,5 -2,6,5,0,1,3,4 -2,0,4,5,3,6,1 -6,3,5,1,2,4,0 -6,4,5,0,1,2,3 -5,0,4,2,6,3,1 -1,5,4,0,6,2,3 -5,4,1,0,6,2,3 -4,0,6,1,2,3,5 -5,3,1,2,0,6,4 -4,0,1,2,6,3,5 -5,4,3,0,6,2,1 -3,4,0,6,5,2,1 -3,5,4,0,6,1,2 -2,0,3,6,5,4,1 -3,0,1,6,2,4,5 -2,3,0,6,5,1,4 -6,4,0,2,1,3,5 -3,0,1,5,2,6,4 -2,0,4,5,3,6,1 -6,3,0,5,2,1,4 -2,3,4,5,6,0,1 -5,2,0,6,1,3,4 -3,2,4,6,1,0,5 -5,0,4,1,6,2,3 -6,3,0,2,5,1,4 -4,6,3,2,5,0,1 -6,0,3,5,2,4,1 -6,2,5,1,0,3,4 -4,2,5,0,6,1,3 -4,6,0,1,2,3,5 -3,0,1,4,6,2,5 -3,6,5,4,2,0,1 -5,6,3,4,1,2,0 -4,5,6,0,2,3,1 -1,4,6,5,2,0,3 -6,2,0,5,3,1,4 -4,5,6,1,2,0,3 -5,0,4,2,1,6,3 -3,6,1,5,2,0,4 -5,0,4,1,6,2,3 -5,0,6,2,1,3,4 -1,3,0,6,5,2,4 -6,0,5,4,3,1,2 -4,0,6,1,2,3,5 -6,2,1,5,0,4,3 -4,3,5,6,0,2,1 -5,3,6,4,1,0,2 -5,4,6,1,0,2,3 -4,0,5,1,6,3,2 -2,5,0,1,6,4,3 -6,5,3,2,1,4,0 -4,2,0,6,5,3,1 -4,6,1,0,5,3,2 -4,2,3,5,0,6,1 -5,0,3,1,6,2,4 -4,3,0,6,1,2,5 -5,3,4,2,6,0,1 -5,4,0,6,3,2,1 -5,3,6,1,2,4,0 -3,0,1,6,5,2,4 -6,0,5,4,2,3,1 -3,0,6,5,1,4,2 -3,0,1,4,5,6,2 -4,0,3,1,6,2,5 -1,2,4,6,3,0,5 -6,2,5,0,1,4,3 -2,0,5,6,1,3,4 -4,0,3,5,6,2,1 -1,4,3,5,0,6,2 -6,0,3,4,5,2,1 -6,4,1,0,3,2,5 -3,4,6,1,0,2,5 -3,0,5,4,2,6,1 -5,4,1,2,6,0,3 +6,0,5,4,3,2,1 +6,4,3,5,2,0,1 +3,6,4,2,1,0,5 +2,0,1,4,6,3,5 +3,2,0,5,6,4,1 +2,6,1,0,5,4,3 +2,6,4,5,0,3,1 +6,2,3,0,1,4,5 +3,2,6,0,1,4,5 +4,2,3,0,5,6,1 +2,5,4,0,3,6,1 +2,5,0,6,1,3,4 +5,4,6,2,1,3,0 +1,4,0,2,6,3,5 +2,6,4,1,5,0,3 +3,2,5,0,1,6,4 +3,5,4,0,2,6,1 +6,3,0,4,1,2,5 +3,5,0,6,2,4,1 +2,5,3,4,6,1,0 +4,5,6,1,0,2,3 +6,5,4,1,3,2,0 +3,4,6,5,1,0,2 2,3,6,0,5,1,4 -5,0,3,2,6,1,4 -6,3,1,0,2,4,5 -2,3,5,4,6,0,1 -4,5,6,0,3,2,1 -5,3,6,2,0,4,1 -5,2,3,6,0,4,1 -4,6,5,0,3,1,2 -6,5,1,0,3,4,2 -5,0,4,1,3,6,2 -3,4,5,6,0,1,2 -1,0,4,2,3,6,5 -1,6,5,2,3,4,0 -1,5,0,4,6,2,3 -5,3,1,6,2,0,4 -3,2,6,4,1,0,5 -5,6,4,2,0,3,1 -1,4,0,2,5,6,3 -3,0,4,1,2,6,5 -5,0,3,6,1,2,4 -4,3,6,0,1,2,5 -4,6,1,5,3,2,0 -6,5,4,0,1,2,3 -3,4,0,6,2,1,5 -2,4,6,0,3,1,5 -5,3,0,4,6,1,2 -4,3,0,5,6,1,2 -2,0,4,5,6,1,3 -5,4,3,2,6,0,1 -2,0,4,1,6,3,5 -3,0,6,5,1,2,4 +6,2,5,0,1,4,3 +1,2,6,4,5,0,3 +1,2,4,6,3,0,5 6,3,0,4,5,2,1 -3,5,0,6,2,4,1 -5,6,1,0,3,2,4 -5,6,1,2,0,3,4 -1,4,6,2,3,0,5 -6,3,1,2,0,4,5 -2,5,6,4,1,3,0 -1,4,0,6,5,2,3 -4,6,3,5,1,2,0 -5,2,3,4,6,0,1 -4,5,1,6,3,0,2 -5,0,3,2,6,4,1 -3,5,0,1,2,6,4 -2,0,6,1,5,3,4 -1,6,4,5,3,2,0 -1,3,6,5,2,0,4 -2,5,0,1,6,4,3 -4,5,3,6,2,0,1 -2,0,3,4,6,1,5 -5,4,3,1,6,0,2 -5,6,1,2,3,4,0 -3,0,6,5,1,4,2 -4,0,3,5,2,6,1 -5,6,1,2,3,0,4 -5,4,6,0,3,2,1 -5,0,3,4,6,1,2 -6,3,1,4,5,2,0 -4,2,3,6,1,0,5 -3,0,5,6,2,1,4 -3,5,1,0,6,4,2 -2,5,3,6,1,0,4 -5,3,1,0,2,6,4 -2,0,3,5,6,1,4 -6,2,3,1,5,0,4 -4,0,3,1,2,6,5 -3,5,1,4,2,6,0 -5,6,0,4,2,3,1 -6,2,3,0,1,4,5 -4,6,3,1,5,0,2 -1,2,4,0,5,6,3 +3,0,5,4,6,2,1 +3,2,5,1,0,6,4 +5,6,4,2,1,3,0 +2,4,1,6,3,0,5 +4,2,1,0,6,3,5 +3,0,4,1,5,6,2 +5,2,4,6,3,1,0 +4,0,5,6,1,2,3 +3,6,1,4,0,2,5 +1,4,5,0,3,6,2 +4,5,1,2,0,6,3 +3,5,0,6,1,4,2 +3,4,1,0,5,6,2 +4,5,1,6,0,2,3 +3,5,1,2,6,0,4 +2,5,4,6,1,3,0 3,4,1,5,0,6,2 -3,4,0,6,1,2,5 -6,4,5,1,2,3,0 -5,3,4,0,6,2,1 -4,2,0,6,5,1,3 -4,5,1,0,2,6,3 -4,0,5,6,2,3,1 -5,0,6,2,3,4,1 -4,5,6,1,2,0,3 -2,0,5,1,6,4,3 -5,2,3,6,1,0,4 +6,2,4,0,3,1,5 +3,5,4,2,6,1,0 3,0,5,6,2,4,1 -2,3,5,0,1,6,4 -6,5,3,0,1,4,2 +1,2,6,4,5,3,0 +3,2,4,0,6,1,5 +3,5,6,2,1,4,0 +1,0,6,5,2,3,4 +5,6,3,2,0,4,1 +3,6,0,1,5,2,4 +6,5,0,4,1,3,2 +3,5,6,4,2,0,1 +5,2,6,1,0,4,3 +1,6,0,4,5,3,2 +1,6,3,4,0,2,5 +5,0,6,4,3,1,2 +2,4,1,5,3,6,0 +4,6,1,5,3,2,0 +2,3,5,4,0,6,1 +1,0,4,6,3,2,5 +1,3,5,4,2,6,0 +3,0,1,5,6,4,2 +4,0,5,6,3,1,2 +6,3,4,1,2,0,5 +1,6,4,2,0,3,5 +1,3,0,2,6,4,5 +1,2,3,5,0,6,4 +4,0,6,1,5,3,2 +4,0,5,2,3,6,1 +6,0,5,1,3,2,4 +3,5,4,0,6,1,2 +3,5,0,1,2,6,4 +3,2,4,5,0,6,1 +5,3,1,0,2,6,4 +5,0,4,6,2,3,1 +6,4,0,5,3,1,2 +4,2,0,1,3,6,5 +2,0,5,4,6,3,1 +2,5,4,0,1,6,3 +1,4,3,5,6,2,0 +2,0,4,1,5,6,3 +2,4,0,6,5,3,1 +1,2,5,6,3,4,0 +4,0,1,6,5,2,3 +5,2,0,4,6,3,1 +4,2,6,0,5,3,1 +3,2,0,6,5,4,1 +3,0,6,1,5,2,4 +3,6,1,2,5,4,0 +5,0,4,1,2,6,3 +2,0,1,5,3,6,4 +6,2,0,4,5,1,3 +3,4,0,2,6,1,5 +3,2,0,4,6,1,5 +5,2,0,6,1,4,3 6,0,5,2,1,4,3 -3,2,4,0,6,1,5 -3,5,6,0,2,4,1 -1,0,4,2,3,6,5 -4,2,6,1,0,3,5 -2,6,5,4,0,1,3 -6,3,5,0,2,4,1 -4,5,0,1,2,6,3 +1,3,5,6,0,2,4 +6,4,5,0,2,1,3 +4,6,0,5,1,2,3 +6,3,5,2,0,1,4 +4,3,6,5,1,2,0 +5,0,1,4,6,2,3 +5,3,0,4,1,6,2 +1,5,6,2,3,0,4 +3,0,4,6,1,2,5 +2,3,4,1,0,6,5 +1,3,5,0,6,4,2 +3,2,4,1,6,0,5 4,0,3,5,2,6,1 -4,0,6,1,2,3,5 -3,4,1,5,2,6,0 -5,6,1,2,3,4,0 -4,0,5,6,2,1,3 -5,0,1,6,2,4,3 -3,6,0,5,1,2,4 -6,0,4,1,3,2,5 -5,6,3,0,2,4,1 -4,0,5,6,1,3,2 -4,2,6,0,3,1,5 -2,5,0,4,6,3,1 -3,6,4,5,2,1,0 -5,2,3,0,1,6,4 -6,5,4,2,1,0,3 -5,0,6,1,3,2,4 -4,2,5,0,3,6,1 -1,4,0,6,2,3,5 -2,0,3,1,5,6,4 -5,6,1,4,0,3,2 -2,0,5,1,3,6,4 -1,5,0,4,6,3,2 -4,5,6,2,3,0,1 -5,2,0,4,6,3,1 -4,0,5,1,6,3,2 +4,3,1,0,2,6,5 +1,2,0,5,6,4,3 +1,3,6,4,0,2,5 +2,3,5,0,1,6,4 +1,2,5,6,3,0,4 +6,4,5,2,3,0,1 +3,6,4,1,5,2,0 +4,3,5,6,1,0,2 +6,5,0,4,3,1,2 +1,6,4,5,0,3,2 +5,6,4,2,3,0,1 +4,2,1,0,5,6,3 +6,3,1,0,5,2,4 +5,2,0,1,6,4,3 +6,3,0,4,5,1,2 +5,6,4,0,2,3,1 +5,3,1,0,6,2,4 +4,2,5,1,6,3,0 +2,0,5,4,1,6,3 +4,6,1,5,3,0,2 +3,6,0,1,2,4,5 +5,4,3,2,0,6,1 +1,0,5,6,2,4,3 +2,3,1,0,6,4,5 +2,5,6,4,0,3,1 +1,3,4,5,6,2,0 +5,0,6,4,2,3,1 +5,4,1,0,2,6,3 +6,2,5,4,0,3,1 +2,4,5,0,6,3,1 +3,0,6,2,5,1,4 +4,3,6,0,5,2,1 +6,5,1,2,3,4,0 +3,5,0,6,1,2,4 +1,5,3,2,6,4,0 +2,0,6,1,3,4,5 +2,4,1,5,0,6,3 +5,4,6,2,0,1,3 +4,6,3,5,2,0,1 +2,3,1,4,6,0,5 +5,4,3,6,1,0,2 6,4,1,2,5,3,0 -3,4,1,0,5,6,2 -3,0,6,4,5,2,1 -4,2,3,5,0,6,1 -6,0,3,1,2,4,5 -3,4,5,1,0,6,2 -4,3,6,0,2,1,5 -2,6,4,5,0,1,3 -4,3,1,5,6,0,2 -1,2,4,0,3,6,5 -5,4,3,2,1,6,0 -1,4,6,0,5,2,3 -6,3,0,5,2,4,1 -4,5,0,2,1,6,3 -5,0,3,4,6,2,1 -5,0,6,2,1,3,4 -5,4,0,1,6,2,3 -4,0,5,1,2,6,3 -4,5,1,0,2,6,3 -1,3,6,5,0,2,4 -5,0,1,2,3,6,4 -2,0,1,6,3,4,5 -5,3,0,6,1,4,2 -6,5,4,0,2,3,1 -4,0,6,1,3,2,5 -6,5,1,4,3,2,0 -6,3,0,2,5,1,4 -3,5,1,0,6,4,2 -6,0,4,2,1,3,5 -4,5,0,1,6,3,2 -6,4,1,2,0,3,5 -2,0,3,5,1,6,4 -1,5,3,2,6,0,4 -5,0,3,4,1,6,2 -6,3,0,5,1,4,2 -3,4,0,2,5,6,1 -3,5,1,0,6,4,2 -3,2,4,1,6,0,5 -5,4,1,6,2,3,0 -3,0,1,5,2,6,4 -3,0,6,2,1,4,5 -3,0,6,4,5,2,1 -6,3,5,2,1,4,0 -6,2,3,5,1,4,0 -4,3,5,6,2,1,0 -4,0,3,5,6,1,2 -2,0,1,4,5,6,3 -2,3,4,5,6,0,1 -3,5,4,6,0,2,1 -5,6,3,4,0,1,2 -5,0,1,6,2,3,4 -5,6,1,4,2,0,3 -2,3,4,0,6,1,5 -5,0,1,4,6,3,2 -4,3,0,6,1,2,5 -1,3,5,4,6,0,2 -4,0,3,1,6,2,5 -1,0,5,4,6,3,2 -2,5,3,1,6,0,4 -6,5,0,2,3,1,4 -5,0,4,2,1,6,3 -5,0,6,1,3,4,2 -2,4,6,1,0,3,5 -2,5,0,1,6,3,4 -4,5,3,0,6,1,2 -5,0,3,4,6,1,2 -4,0,3,1,2,6,5 -6,4,3,5,0,1,2 -2,0,5,1,3,6,4 -2,4,0,6,1,3,5 -5,4,3,2,6,1,0 -4,3,1,6,0,2,5 -4,2,1,0,6,3,5 -3,0,5,4,6,2,1 -6,4,5,1,3,2,0 -4,0,3,6,5,2,1 -6,3,5,2,1,0,4 -5,0,4,1,6,3,2 -6,0,1,5,3,4,2 -3,0,4,5,6,2,1 -2,3,5,4,6,1,0 -6,0,5,2,1,3,4 -2,4,0,1,3,6,5 -6,0,4,1,5,2,3 -4,5,0,6,1,3,2 -3,5,0,4,6,2,1 +1,3,4,2,0,6,5 +1,5,4,0,6,3,2 +5,6,3,1,2,0,4 +6,3,0,1,5,2,4 +5,6,4,1,3,0,2 +4,6,1,0,5,2,3 +1,4,6,5,3,0,2 +6,3,1,5,0,4,2 +5,4,6,0,1,2,3 +4,5,3,0,2,6,1 +2,5,4,6,3,1,0 +3,0,6,1,5,4,2 +6,3,1,0,2,4,5 +5,3,6,1,0,4,2 +4,0,5,6,2,1,3 +1,4,6,0,5,3,2 +5,2,4,0,3,6,1 +5,4,0,1,3,6,2 +5,0,1,2,6,4,3 5,0,1,4,6,3,2 -3,6,4,2,5,1,0 -4,6,1,2,5,3,0 -2,0,6,5,3,1,4 -3,2,5,6,1,0,4 -4,2,6,1,3,0,5 -4,2,6,5,1,3,0 -4,0,6,2,1,3,5 -5,0,3,2,6,1,4 -2,0,4,5,6,1,3 -1,3,0,4,6,2,5 -3,2,1,5,0,6,4 -2,5,6,0,3,4,1 -6,0,1,4,3,2,5 -4,5,0,6,3,1,2 -6,5,0,2,3,1,4 -4,3,5,0,6,2,1 -3,0,4,5,6,2,1 -6,0,4,5,1,2,3 -5,4,0,2,6,3,1 -5,0,3,1,6,4,2 -3,4,6,5,0,1,2 -4,3,0,5,6,2,1 -3,0,4,6,5,1,2 -5,0,6,2,3,1,4 -5,2,4,0,1,6,3 -1,2,5,0,3,6,4 -6,0,5,4,3,2,1 -5,6,4,0,3,1,2 -1,6,3,4,0,2,5 -1,6,5,4,0,2,3 -2,3,6,4,1,0,5 -3,2,4,0,1,6,5 -4,5,1,0,6,3,2 -4,3,5,2,0,6,1 -3,0,1,4,5,6,2 -3,6,5,2,1,4,0 +6,4,3,0,2,1,5 +1,2,5,4,0,6,3 +2,3,4,5,0,6,1 +4,0,5,2,1,6,3 +5,6,1,0,2,3,4 +3,2,6,1,0,4,5 +2,6,5,0,3,1,4 +2,4,0,6,5,1,3 +5,4,3,0,2,6,1 +2,5,3,0,6,4,1 6,0,3,1,5,2,4 -3,0,4,6,5,1,2 -1,3,0,6,2,4,5 -1,0,3,4,5,6,2 -6,4,5,0,1,2,3 -2,3,6,5,1,0,4 -2,0,4,5,1,6,3 +4,0,3,1,5,6,2 +5,2,6,4,1,3,0 +1,3,4,5,0,6,2 +6,5,4,2,3,1,0 +6,4,0,5,2,3,1 +4,6,1,2,5,0,3 +4,6,3,0,1,2,5 +2,3,6,5,0,1,4 +6,4,0,5,2,1,3 +3,6,0,4,5,2,1 +2,6,0,4,5,1,3 +4,6,5,0,2,3,1 +1,6,3,0,2,4,5 +3,6,5,4,2,1,0 3,0,6,5,2,4,1 -4,3,0,6,2,1,5 -3,2,5,4,6,1,0 -6,0,5,2,1,4,3 -5,4,3,2,6,1,0 -5,0,4,6,3,1,2 +4,2,5,0,1,6,3 +1,2,3,4,0,6,5 +3,4,1,6,0,2,5 +1,5,6,0,2,4,3 +2,3,4,5,1,6,0 +3,5,4,2,0,6,1 +4,0,6,5,1,2,3 +1,5,4,0,2,6,3 +5,2,0,6,3,4,1 +1,2,5,0,6,3,4 +1,3,0,4,2,6,5 +3,0,4,6,5,2,1 +2,0,4,5,6,3,1 +2,0,6,4,1,3,5 +2,0,3,4,1,6,5 +1,6,5,0,3,2,4 +1,0,3,2,5,6,4 +3,4,5,2,0,6,1 +5,6,0,1,2,4,3 +3,4,6,2,0,1,5 +3,0,4,6,2,1,5 +4,6,1,5,0,3,2 +2,5,6,4,3,0,1 +1,5,6,2,3,4,0 +1,6,4,5,3,2,0 +3,5,6,2,1,0,4 +4,2,6,1,3,0,5 +6,5,3,1,0,4,2 +2,6,5,4,0,3,1 +2,4,5,6,1,3,0 +2,6,5,4,3,0,1 +4,0,5,1,6,2,3 +1,3,5,6,2,4,0 +2,3,4,5,6,0,1 +2,5,6,0,1,3,4 +6,2,5,0,1,3,4 +6,2,4,1,0,3,5 +5,4,0,1,6,2,3 +6,3,1,4,5,0,2 +2,6,0,1,5,3,4 +1,3,6,0,5,4,2 5,0,1,6,3,4,2 -4,2,6,0,3,1,5 -6,4,1,2,5,3,0 -6,4,3,2,1,0,5 -3,0,4,5,1,6,2 -2,4,1,6,3,0,5 -6,0,3,1,5,2,4 -3,2,4,5,6,0,1 +3,0,4,6,5,1,2 +4,6,3,0,2,1,5 +2,6,0,4,5,3,1 +3,5,6,2,0,4,1 +2,6,3,0,1,4,5 +4,2,0,5,6,1,3 +5,4,0,2,6,1,3 3,0,5,4,6,1,2 -3,6,4,1,2,0,5 -4,6,5,2,3,0,1 -6,0,5,2,3,1,4 -6,4,1,0,5,3,2 -6,2,0,5,1,3,4 -4,6,0,5,3,1,2 -3,0,1,4,5,6,2 -5,0,6,4,2,3,1 -4,6,5,0,3,1,2 -3,4,5,6,0,1,2 -4,0,1,5,3,6,2 -4,0,5,1,6,3,2 -6,4,1,5,3,2,0 -2,4,5,6,0,3,1 -4,6,1,5,3,0,2 -2,5,6,4,1,0,3 -3,5,1,6,2,0,4 -3,6,4,5,1,2,0 -1,3,4,6,0,2,5 -3,0,5,6,1,4,2 -4,5,1,2,6,3,0 -5,0,3,1,6,2,4 -6,4,0,5,2,3,1 -4,0,6,5,2,3,1 -6,5,1,0,3,2,4 +5,3,6,1,0,2,4 +3,6,1,5,0,2,4 +5,0,1,6,3,2,4 +1,4,0,5,2,6,3 +6,5,3,2,0,4,1 +2,5,3,6,0,1,4 +6,0,4,2,5,3,1 +6,3,1,2,0,4,5 +3,2,5,4,1,6,0 +4,6,3,5,1,2,0 +6,4,0,1,5,2,3 +5,3,0,2,6,1,4 +4,3,6,5,0,1,2 +2,0,4,5,3,6,1 +2,5,0,1,3,6,4 +1,2,3,0,6,4,5 +3,6,5,0,2,4,1 +1,4,5,6,0,3,2 +4,3,0,6,5,1,2 +1,5,3,0,6,4,2 +6,5,1,2,0,3,4 +4,6,0,2,3,1,5 +4,0,1,6,5,3,2 +3,4,0,6,5,1,2 +5,2,6,0,1,4,3 +3,6,0,1,5,4,2 +3,5,0,6,2,1,4 +6,3,1,4,2,0,5 +6,0,3,5,2,4,1 +6,0,4,1,3,2,5 +4,6,3,0,5,1,2 +1,4,6,5,3,2,0 +3,4,1,2,5,6,0 +6,2,3,4,0,1,5 +3,4,1,0,2,6,5 +5,0,3,4,1,6,2 +2,6,4,1,5,3,0 +6,2,0,1,3,4,5 +6,2,0,4,3,1,5 +3,4,6,1,5,2,0 +4,5,3,6,1,0,2 +5,4,6,0,2,1,3 +5,6,3,4,1,2,0 +5,3,0,6,2,1,4 +2,4,1,6,0,3,5 +3,2,5,1,6,4,0 +6,4,1,0,3,2,5 +5,2,4,1,6,3,0 +1,4,0,2,5,6,3 +6,4,5,0,2,3,1 +5,4,3,6,1,2,0 +3,0,1,5,6,2,4 +2,5,4,1,6,3,0 +6,3,4,2,5,1,0 +3,5,1,4,2,6,0 +4,5,6,1,3,0,2 +2,3,1,5,0,6,4 +5,6,4,2,0,1,3 +2,5,6,0,1,4,3 5,2,6,1,0,3,4 -3,0,1,6,2,4,5 -5,0,3,2,6,4,1 -5,2,0,1,3,6,4 -1,4,5,6,3,0,2 -4,0,6,5,2,3,1 -6,5,3,2,0,1,4 -1,5,0,2,6,4,3 -5,0,6,2,3,1,4 -3,5,6,2,1,0,4 -6,0,5,2,3,4,1 -5,0,1,6,3,4,2 -2,6,4,0,3,1,5 -2,0,4,1,5,6,3 -2,3,1,4,0,6,5 -4,0,6,1,5,2,3 -6,5,0,2,1,3,4 -6,4,5,2,1,3,0 -4,5,0,6,3,2,1 -4,3,1,0,6,2,5 -6,3,4,5,1,0,2 -2,0,3,5,6,4,1 -4,2,1,5,0,6,3 -5,6,4,0,1,3,2 -2,6,5,1,3,4,0 -2,0,6,5,1,3,4 -2,6,0,5,1,4,3 -6,4,1,5,2,0,3 +3,6,0,5,1,4,2 +1,0,6,5,2,4,3 +3,2,1,0,5,6,4 +5,6,3,4,2,0,1 +3,5,4,6,2,0,1 +5,4,0,6,3,2,1 3,0,1,4,2,6,5 -6,0,5,1,2,3,4 -3,2,4,6,1,0,5 -3,6,1,0,5,2,4 -4,0,5,6,3,2,1 -2,5,1,4,3,6,0 -2,4,6,1,0,3,5 -2,3,5,6,0,4,1 -2,5,0,1,3,6,4 -4,2,5,1,6,0,3 -1,5,4,2,6,3,0 -4,0,6,2,5,3,1 -6,2,4,0,5,1,3 -2,3,1,5,6,4,0 -1,6,4,0,5,3,2 -1,2,6,5,3,0,4 -2,4,5,6,3,0,1 -2,4,3,5,6,0,1 -3,4,6,0,1,2,5 +1,2,5,4,6,0,3 +3,6,4,1,5,0,2 +4,5,6,0,2,1,3 +1,3,6,2,0,4,5 +1,3,4,6,2,0,5 +5,6,1,0,3,4,2 +6,5,3,4,1,2,0 +2,3,1,6,0,4,5 +5,0,1,6,2,4,3 +2,0,6,5,3,4,1 +1,6,5,4,0,3,2 +2,5,0,1,6,3,4 +3,6,1,4,5,0,2 +5,0,6,1,2,4,3 +4,5,0,6,3,2,1 +1,3,0,5,6,2,4 +1,6,4,0,2,3,5 +4,5,0,6,1,2,3 +5,0,1,4,2,6,3 +5,2,6,4,3,1,0 +6,3,1,2,5,0,4 +4,6,5,0,1,3,2 +6,2,0,4,5,3,1 +2,5,4,6,0,3,1 +3,6,5,4,0,1,2 +6,4,3,1,0,2,5 +6,5,0,1,2,4,3 +1,2,6,0,5,3,4 +6,5,3,1,2,0,4 +2,4,0,1,6,3,5 +6,5,3,0,1,4,2 +3,5,6,2,0,1,4 +4,3,5,0,6,1,2 +1,2,3,5,6,0,4 +4,0,3,6,1,2,5 +4,2,1,6,5,0,3 +6,5,4,1,2,0,3 +6,4,5,0,3,2,1 +1,4,6,0,2,3,5 +3,5,4,6,0,2,1 +5,2,6,0,3,4,1 +1,5,6,4,3,0,2 +2,0,6,1,5,3,4 +1,2,3,4,6,0,5 +1,5,0,6,3,4,2 +5,2,3,4,0,6,1 +5,0,1,2,6,3,4 +2,3,5,6,1,0,4 +4,5,0,2,6,3,1 +6,2,4,5,0,1,3 +1,2,5,4,3,6,0 +1,5,4,6,2,0,3 +5,6,1,2,0,4,3 +6,2,4,5,0,3,1 +5,0,6,4,2,1,3 +1,4,6,2,0,3,5 1,6,3,2,0,4,5 -6,3,5,4,2,1,0 -3,0,1,5,2,6,4 -3,0,1,6,5,2,4 -5,6,4,1,3,0,2 +5,4,1,2,6,3,0 +6,3,0,2,1,4,5 +2,3,5,1,6,0,4 +5,0,3,2,6,1,4 +6,5,4,1,3,0,2 +3,6,0,5,2,4,1 +4,2,0,5,6,3,1 +5,2,4,6,1,0,3 +5,4,1,6,0,2,3 +5,4,1,6,2,0,3 +1,5,4,2,3,6,0 +5,0,1,4,3,6,2 +4,6,1,5,0,2,3 +2,5,0,6,3,1,4 +6,0,3,5,1,4,2 +6,5,3,0,2,1,4 +3,4,5,6,0,1,2 +6,5,1,0,3,2,4 +6,0,1,4,5,2,3 +6,4,5,2,1,0,3 +5,2,1,6,3,4,0 +4,3,0,1,6,2,5 +6,0,4,1,5,3,2 +3,5,1,6,0,4,2 +4,2,6,5,1,3,0 +2,6,1,5,3,4,0 3,2,0,5,6,1,4 -1,6,0,4,5,2,3 -4,0,5,2,1,6,3 +1,5,3,2,0,6,4 +6,3,5,2,1,0,4 +3,4,0,6,5,2,1 +2,6,5,4,1,3,0 +1,2,0,5,3,6,4 +3,6,5,2,1,4,0 +2,6,1,5,0,4,3 +1,3,5,2,6,4,0 +3,6,4,0,5,1,2 +3,5,6,0,2,1,4 +2,4,0,1,5,6,3 +1,5,6,2,0,4,3 5,0,1,2,3,6,4 -4,3,0,5,2,6,1 -1,6,0,4,2,3,5 -4,5,6,0,1,3,2 -1,2,4,6,5,0,3 -4,5,3,0,2,6,1 -6,0,3,1,2,4,5 -2,5,0,1,6,4,3 -6,4,1,5,3,0,2 -6,0,3,5,2,4,1 -4,0,3,6,5,1,2 -6,0,3,5,2,4,1 -4,0,6,1,2,3,5 -6,3,0,4,5,2,1 -4,5,3,1,6,0,2 -2,0,6,1,5,3,4 -4,0,1,6,3,2,5 -3,2,0,4,5,6,1 -6,0,5,2,3,1,4 -2,3,4,0,5,6,1 -6,3,0,4,5,1,2 -6,0,1,4,3,2,5 -5,2,1,0,6,4,3 -5,4,6,0,2,3,1 -4,2,3,6,0,1,5 -6,3,1,5,0,2,4 -5,0,4,1,3,6,2 -6,0,1,4,5,3,2 -6,0,5,1,2,3,4 -4,0,5,1,6,2,3 -6,4,3,2,1,0,5 -6,3,5,0,1,2,4 -1,3,5,4,6,0,2 -5,6,0,2,1,3,4 -2,0,1,6,3,4,5 -4,0,1,2,6,3,5 -4,2,1,5,6,0,3 -2,6,4,1,5,0,3 -1,2,0,5,6,4,3 -3,5,4,0,1,6,2 -4,0,5,6,3,2,1 -4,6,5,1,3,0,2 -5,3,1,0,6,4,2 -1,0,6,2,5,4,3 -5,6,1,4,3,0,2 -3,4,0,6,2,1,5 -6,4,0,5,3,1,2 -3,0,4,5,2,6,1 -4,6,5,2,1,0,3 -6,4,3,2,5,1,0 -5,3,1,2,0,6,4 -2,0,6,4,3,1,5 -1,0,5,6,2,3,4 -5,3,6,4,1,0,2 -3,4,5,6,0,1,2 -4,5,1,0,3,6,2 -4,0,5,2,3,6,1 -2,4,5,6,0,1,3 -1,4,3,6,0,2,5 -2,0,6,5,3,1,4 +5,0,6,1,3,2,4 +6,2,5,4,1,3,0 +6,2,3,1,0,4,5 +4,0,1,5,6,3,2 +2,5,3,6,0,4,1 2,0,5,1,6,3,4 -6,3,0,1,2,4,5 -1,0,5,4,2,6,3 -2,5,3,0,6,4,1 -2,4,6,1,0,3,5 -6,5,3,0,1,4,2 -5,0,3,6,1,2,4 -6,2,4,5,0,1,3 -4,0,5,2,6,1,3 -4,0,1,5,6,2,3 -1,5,0,4,6,3,2 -2,5,4,0,6,3,1 -6,5,4,1,2,3,0 -2,0,4,1,3,6,5 -4,6,0,5,2,1,3 -4,5,6,1,2,0,3 -3,6,4,1,2,0,5 -6,3,5,2,0,4,1 -1,6,4,0,5,2,3 -1,5,0,4,2,6,3 -2,4,3,5,6,1,0 -4,0,5,2,1,6,3 -4,3,6,5,0,1,2 -6,5,3,4,1,0,2 -5,3,0,1,2,6,4 -2,3,4,5,6,1,0 -3,6,0,5,1,2,4 -4,0,5,1,6,3,2 -5,4,3,2,6,1,0 -2,3,1,5,0,6,4 -4,2,6,5,0,1,3 -4,6,1,5,2,0,3 -6,3,0,4,2,1,5 -6,4,1,5,0,3,2 -3,0,6,4,5,1,2 -4,5,0,2,1,6,3 -4,6,0,1,5,2,3 -3,5,0,4,1,6,2 -1,3,0,4,5,6,2 -6,2,1,0,3,4,5 -1,0,3,5,6,4,2 -4,3,0,2,6,1,5 -2,5,4,0,3,6,1 -4,5,3,1,6,0,2 -4,5,0,6,2,1,3 -3,2,0,4,5,6,1 -4,3,5,1,0,6,2 -5,0,3,1,2,6,4 -4,6,0,2,5,3,1 -6,4,5,0,3,2,1 -5,2,3,6,1,0,4 -3,5,0,1,6,2,4 -3,6,5,4,2,1,0 -6,0,4,5,3,1,2 -5,2,0,6,3,1,4 -6,0,3,1,5,2,4 -6,4,5,2,0,1,3 +1,2,3,0,5,6,4 +5,4,3,1,6,2,0 +1,2,0,6,5,4,3 +4,2,0,6,1,3,5 +6,2,1,4,3,0,5 +6,4,0,5,1,2,3 +5,3,6,2,1,4,0 +3,4,1,6,5,2,0 +5,2,0,1,3,6,4 +5,4,3,6,2,1,0 +4,2,0,1,6,3,5 +6,0,1,4,5,3,2 +6,4,5,2,3,1,0 +2,4,1,0,6,3,5 +6,0,5,4,2,1,3 +5,6,0,4,3,2,1 +1,5,0,6,3,2,4 +5,3,4,6,2,0,1 +5,0,4,1,3,6,2 +5,2,0,4,6,1,3 +4,0,3,2,1,6,5 +3,2,6,0,5,4,1 +5,3,4,2,6,1,0 +2,4,3,1,0,6,5 +6,3,4,5,1,2,0 +6,5,0,4,3,2,1 +4,5,3,1,6,2,0 +3,2,4,1,5,6,0 +1,5,4,2,0,6,3 +4,6,0,2,5,1,3 +5,2,1,6,0,3,4 +3,2,6,0,5,1,4 +3,4,0,1,6,2,5 +6,5,4,0,1,2,3 +1,3,5,0,2,6,4 +6,3,4,1,5,0,2 +5,6,1,2,3,4,0 +5,4,6,2,3,0,1 +5,6,4,1,0,2,3 +4,6,1,0,3,2,5 +5,6,3,2,0,1,4 +2,4,3,6,0,1,5 +1,0,3,2,6,4,5 +3,2,4,5,6,1,0 +1,4,3,5,6,0,2 +6,3,5,1,0,4,2 1,6,0,5,2,4,3 -5,4,6,0,3,2,1 -6,5,1,0,2,3,4 -5,3,0,4,1,6,2 -2,5,6,0,1,4,3 -6,2,5,4,1,3,0 -4,6,3,2,5,1,0 -6,0,1,2,5,4,3 -5,0,3,4,6,1,2 -4,0,6,1,5,2,3 -3,5,4,6,1,0,2 -5,3,6,2,0,1,4 -6,0,4,2,1,3,5 -5,6,3,2,1,0,4 -2,0,5,4,3,6,1 -2,3,5,0,1,6,4 -6,5,0,4,2,1,3 -3,6,4,2,1,0,5 -4,5,6,1,3,2,0 -3,4,0,5,1,6,2 -1,0,4,2,3,6,5 -1,6,4,5,3,2,0 -4,3,0,2,5,6,1 -2,4,6,0,5,1,3 -6,4,3,1,5,2,0 -2,4,5,6,0,1,3 +1,2,5,6,0,4,3 +6,5,1,4,0,2,3 +5,6,3,0,1,4,2 +6,3,5,4,1,2,0 +1,5,4,0,6,2,3 +1,4,6,5,0,3,2 +6,0,1,5,2,3,4 +1,6,4,0,3,2,5 +3,5,4,1,6,2,0 +6,2,1,5,0,4,3 +1,5,3,6,2,0,4 +6,4,1,0,5,3,2 +2,4,3,6,5,0,1 +1,0,3,5,6,2,4 +2,0,4,5,1,6,3 +1,2,0,6,5,3,4 +1,3,5,0,6,2,4 +2,3,5,1,6,4,0 +1,0,3,6,5,2,4 +4,3,5,6,2,1,0 +5,4,3,6,0,2,1 +2,3,6,1,5,4,0 +6,3,4,5,0,1,2 +6,5,4,2,1,3,0 +3,2,5,6,1,4,0 +6,5,1,2,0,4,3 +3,2,5,6,0,1,4 +1,0,6,5,3,2,4 +3,0,5,2,6,1,4 +6,3,4,5,0,2,1 +3,6,0,5,2,1,4 +5,4,3,2,6,1,0 +6,3,4,5,2,0,1 +5,2,3,1,6,0,4 +1,6,4,0,5,2,3 +3,6,1,2,5,0,4 +5,0,3,4,6,2,1 +2,6,5,0,1,4,3 +4,3,0,1,2,6,5 +3,5,0,2,6,1,4 +6,4,0,5,1,3,2 +5,4,3,0,6,2,1 +5,3,4,2,0,6,1 +5,2,4,6,3,0,1 +1,0,4,5,6,2,3 +4,2,0,1,5,6,3 +1,3,6,5,0,4,2 +2,0,5,6,3,4,1 +3,5,1,0,2,6,4 +1,5,4,2,6,0,3 +6,5,1,4,3,0,2 +5,6,1,4,2,3,0 +3,6,4,0,1,2,5 +3,6,0,2,5,1,4 +2,6,0,5,1,3,4 +5,6,4,2,0,3,1 +3,6,0,5,1,2,4 3,5,0,4,1,6,2 -3,5,0,4,2,6,1 +6,4,3,0,5,1,2 +1,3,4,6,5,2,0 +2,0,4,1,6,3,5 +6,3,1,2,5,4,0 +4,2,3,5,6,0,1 +1,6,3,5,0,4,2 6,0,3,4,2,1,5 -6,5,0,4,3,2,1 -5,4,0,1,6,2,3 -6,2,1,0,3,4,5 -6,3,1,0,2,4,5 -3,0,1,6,5,2,4 -1,0,4,2,6,3,5 -5,0,3,2,6,4,1 -2,0,1,5,3,6,4 -4,3,6,0,2,1,5 -6,0,1,4,2,3,5 -2,3,4,6,1,0,5 -6,4,3,1,2,0,5 -6,4,0,5,3,1,2 -4,0,1,2,6,3,5 -2,3,1,0,6,4,5 -5,3,6,2,0,4,1 -4,0,6,5,1,2,3 -2,3,5,6,1,4,0 -3,2,0,5,1,6,4 -2,5,6,1,3,0,4 -6,0,4,1,5,3,2 -2,5,1,4,3,6,0 -3,4,0,6,5,2,1 -6,2,5,4,3,1,0 +6,4,3,2,5,1,0 +2,3,0,5,6,4,1 +3,2,6,4,0,1,5 +5,6,3,4,1,0,2 +5,3,4,0,2,6,1 +1,5,4,6,0,2,3 +6,0,5,4,1,3,2 +5,3,0,4,6,1,2 +5,0,3,4,2,6,1 +6,2,4,5,1,0,3 +1,2,0,6,3,4,5 +5,2,3,6,1,4,0 +2,3,4,6,0,1,5 +5,3,6,0,2,1,4 +4,2,6,0,1,3,5 +4,2,6,0,3,1,5 +2,6,4,0,5,1,3 +2,4,1,5,6,3,0 +3,6,4,5,1,2,0 +1,3,4,6,5,0,2 +1,3,5,4,6,0,2 +2,6,5,4,3,1,0 +2,3,5,6,0,4,1 +4,5,6,1,3,2,0 +1,4,5,6,3,2,0 +6,5,0,2,1,3,4 +6,2,5,4,3,0,1 +2,6,1,4,0,3,5 +4,2,5,1,6,0,3 +2,3,4,0,6,1,5 +2,5,6,0,3,1,4 +1,3,5,6,2,0,4 +6,4,0,5,3,2,1 +1,5,3,0,6,2,4 +5,0,6,4,1,3,2 +2,4,0,5,3,6,1 +5,3,1,2,6,0,4 +5,4,0,6,3,1,2 +1,6,4,2,5,0,3 +5,6,1,4,2,0,3 +1,5,0,4,3,6,2 +3,6,1,5,0,4,2 +1,2,3,4,5,6,0 +4,6,3,2,0,1,5 +5,6,0,2,1,3,4 +4,0,6,2,1,3,5 +4,5,6,0,3,2,1 +4,0,1,5,2,6,3 +6,5,0,2,3,1,4 +1,0,6,2,5,4,3 +5,0,6,1,2,3,4 +2,0,5,4,6,1,3 +2,5,0,1,6,4,3 +1,2,5,4,6,3,0 4,5,0,6,2,3,1 -2,0,4,1,5,6,3 -6,0,1,5,2,4,3 -1,0,4,2,6,3,5 -2,0,4,6,5,3,1 -5,3,0,4,2,6,1 -5,3,4,6,1,2,0 +3,5,4,1,6,0,2 +1,3,4,0,5,6,2 +3,6,5,1,2,0,4 +6,3,5,2,1,4,0 +4,3,1,5,6,2,0 +3,6,1,0,5,2,4 +2,5,3,6,1,4,0 +6,2,4,0,5,3,1 +4,0,1,2,3,6,5 +3,5,6,1,2,4,0 +3,4,6,5,0,1,2 +4,5,6,0,3,1,2 +5,0,1,6,2,3,4 +6,5,1,4,3,2,0 +6,2,3,4,5,1,0 +5,2,1,4,0,6,3 +6,3,1,0,5,4,2 +6,2,0,1,5,3,4 +5,0,4,6,3,1,2 +6,5,4,2,0,1,3 +2,5,4,0,6,1,3 +6,3,4,5,2,1,0 +6,2,4,1,5,3,0 +5,3,4,1,6,0,2 +4,3,1,2,0,6,5 +6,2,5,4,1,0,3 +2,6,5,1,0,3,4 +3,5,4,1,0,6,2 +6,0,5,4,3,1,2 +1,6,0,5,3,2,4 1,2,4,6,0,3,5 -5,0,4,6,3,2,1 -4,0,3,6,1,2,5 -6,4,0,2,5,1,3 -3,4,0,6,2,1,5 -1,0,6,2,3,4,5 -6,2,0,4,1,3,5 -2,3,0,6,1,4,5 -2,6,4,0,1,3,5 -4,3,5,0,2,6,1 -2,3,0,4,5,6,1 -1,0,3,5,6,2,4 -1,5,4,0,6,3,2 -1,3,5,2,0,6,4 -4,0,3,6,2,1,5 -6,4,0,2,3,1,5 -4,6,3,2,5,1,0 -6,4,5,0,2,1,3 -3,6,4,5,1,0,2 -6,0,3,4,5,1,2 -1,0,5,6,2,4,3 -1,0,4,5,2,6,3 -6,3,4,1,0,2,5 -4,3,6,0,1,2,5 -5,2,0,6,3,1,4 -4,5,6,1,0,3,2 -2,3,4,0,5,6,1 -4,3,0,1,6,2,5 -5,0,6,1,3,2,4 -4,0,6,2,3,1,5 -3,5,4,2,6,0,1 -3,5,0,4,2,6,1 -5,4,0,1,6,3,2 +5,3,0,1,2,6,4 +6,3,5,4,2,0,1 2,6,0,1,3,4,5 -6,0,1,5,2,4,3 -5,6,3,4,1,2,0 -3,2,6,5,1,4,0 -2,0,3,6,5,1,4 -6,0,4,2,1,3,5 -6,0,3,5,1,2,4 -4,0,5,2,3,6,1 -3,2,4,5,6,1,0 -5,0,4,6,3,2,1 +2,6,3,1,0,4,5 +5,4,3,6,0,1,2 +5,3,4,6,1,0,2 +3,5,4,1,2,6,0 +1,3,4,5,2,6,0 1,2,6,5,0,4,3 -2,0,4,6,1,3,5 -3,5,6,4,2,0,1 -6,4,1,2,5,0,3 -4,6,0,5,1,3,2 -3,6,5,4,1,0,2 -1,3,0,6,2,4,5 -6,3,4,0,5,1,2 -3,5,0,2,1,6,4 -3,5,1,6,0,2,4 +4,6,5,2,0,1,3 +6,4,1,0,2,3,5 +4,3,5,6,2,0,1 +2,3,4,5,6,1,0 +2,3,1,0,5,6,4 +3,6,1,2,0,4,5 +4,3,5,1,6,0,2 +6,4,0,1,5,3,2 +4,6,0,2,5,3,1 +4,6,5,2,3,1,0 +6,2,1,0,5,3,4 +6,4,3,0,1,2,5 +6,4,5,0,1,2,3 +3,0,6,5,1,2,4 +2,6,3,1,5,0,4 +4,3,6,1,0,2,5 +4,0,1,5,6,2,3 +3,5,1,4,6,0,2 +1,0,3,4,5,6,2 +5,2,6,0,3,1,4 +2,3,4,1,6,0,5 +4,3,0,1,5,6,2 +2,5,0,4,6,1,3 +3,2,5,1,6,0,4 +5,0,4,6,2,1,3 +4,0,6,5,1,3,2 +5,0,3,1,6,4,2 +2,0,4,1,3,6,5 +1,3,0,6,5,2,4 +6,5,0,4,2,3,1 +5,2,3,4,6,1,0 +5,0,3,2,1,6,4 +6,3,1,4,0,2,5 +3,2,1,5,6,4,0 +3,0,6,5,1,4,2 +2,3,5,4,6,1,0 +2,4,3,0,6,1,5 +6,5,3,2,1,4,0 +4,2,6,5,0,3,1 +6,2,5,0,3,4,1 +2,4,1,6,5,0,3 +4,5,6,0,2,3,1 +2,3,6,4,5,1,0 +3,2,6,5,0,4,1 +6,3,4,5,1,0,2 +6,4,3,0,5,2,1 +4,0,6,2,5,3,1 +2,0,3,4,6,1,5 +4,5,3,2,6,1,0 +3,0,4,5,2,6,1 +2,4,3,6,5,1,0 +4,5,1,6,3,0,2 +2,3,6,4,5,0,1 +1,6,5,2,0,4,3 +2,6,3,4,0,1,5 +3,2,1,0,6,4,5 +6,2,5,0,3,1,4 +4,5,6,2,1,3,0 +3,6,0,4,1,2,5 3,6,5,1,2,4,0 -6,3,0,5,1,4,2 -1,4,5,2,6,0,3 -6,4,3,1,5,2,0 -4,0,5,2,6,3,1 +1,2,0,4,5,6,3 +5,4,3,6,2,0,1 +4,6,1,2,3,0,5 +6,3,5,0,2,1,4 +6,2,1,0,5,4,3 +4,5,1,0,2,6,3 +6,4,0,1,2,3,5 +5,3,1,4,2,6,0 +3,6,5,0,1,4,2 +2,0,5,6,3,1,4 +4,6,1,2,0,3,5 +2,0,4,5,6,1,3 +1,4,3,5,0,6,2 +1,2,0,5,6,3,4 +1,2,6,5,3,0,4 +6,0,1,5,3,2,4 +5,6,1,2,3,0,4 +3,2,4,0,5,6,1 +2,5,3,0,6,1,4 +2,3,1,6,5,4,0 +2,3,4,6,1,0,5 +3,5,6,0,2,4,1 +5,6,0,2,1,4,3 3,4,0,6,2,1,5 -3,0,1,5,6,4,2 -3,0,1,2,5,6,4 -2,3,6,0,1,4,5 +4,3,1,6,0,2,5 +5,4,0,6,1,2,3 +6,2,3,0,5,1,4 +1,2,6,5,3,4,0 +3,6,1,0,2,4,5 +4,2,5,6,0,1,3 +6,4,5,0,3,1,2 +1,3,5,6,0,4,2 +2,4,5,6,0,3,1 6,5,3,0,1,2,4 -1,4,0,6,3,2,5 -3,4,0,6,5,2,1 -3,5,6,2,1,4,0 -5,6,3,1,0,2,4 -5,4,6,2,3,0,1 -4,2,6,5,3,1,0 -2,4,5,0,3,6,1 -3,0,1,4,5,6,2 -5,2,1,0,6,3,4 -6,5,1,4,2,3,0 -5,2,0,4,1,6,3 -5,6,0,2,3,1,4 -6,0,5,4,1,3,2 -5,6,1,0,3,4,2 -4,0,5,6,1,3,2 -3,6,1,0,5,2,4 -6,5,4,1,3,2,0 -5,0,3,6,1,4,2 -2,4,5,0,1,6,3 -2,5,3,0,1,6,4 -2,0,6,4,5,3,1 -4,3,6,0,5,1,2 -5,0,6,2,3,4,1 -5,3,1,4,0,6,2 -1,3,6,5,2,4,0 -2,6,0,5,1,4,3 -4,6,1,0,5,3,2 -5,3,6,4,0,2,1 -3,6,0,4,2,1,5 -4,5,6,1,0,2,3 -2,4,0,5,6,3,1 -3,4,5,2,0,6,1 -3,5,6,4,1,0,2 -4,0,6,5,3,1,2 -3,6,5,2,0,1,4 -3,4,6,5,2,0,1 -3,0,4,6,1,2,5 -5,4,3,6,2,0,1 -3,5,4,6,1,2,0 -6,0,5,1,2,3,4 -4,3,1,5,6,0,2 -1,6,4,2,5,3,0 -6,0,4,5,3,1,2 -2,4,6,5,0,3,1 -6,2,0,5,3,1,4 -1,2,5,0,3,6,4 +1,0,6,2,5,3,4 +2,3,4,0,1,6,5 +1,2,0,4,3,6,5 2,6,1,4,3,0,5 -5,0,1,2,3,6,4 -5,3,1,0,6,4,2 -1,4,6,2,0,3,5 +2,6,1,5,3,0,4 +4,3,6,1,5,2,0 +4,6,3,5,2,1,0 +1,0,6,5,3,4,2 +4,0,1,2,5,6,3 +6,2,3,5,0,1,4 +5,2,6,0,1,3,4 +6,4,1,2,0,3,5 +3,4,1,5,2,6,0 +1,3,6,0,5,2,4 2,6,3,5,1,4,0 -6,0,5,2,1,3,4 -1,2,5,6,0,3,4 -3,6,0,5,1,2,4 -2,0,5,6,3,1,4 -4,3,5,0,2,6,1 -4,3,1,5,0,6,2 -1,0,6,2,3,4,5 -1,0,6,2,5,4,3 -5,0,6,1,3,2,4 -6,4,3,1,2,0,5 -6,0,3,4,5,2,1 -5,2,0,6,1,3,4 -3,0,1,5,2,6,4 -4,3,0,1,6,2,5 -5,0,3,2,6,1,4 -4,6,0,5,3,2,1 -6,4,3,1,0,2,5 -3,0,4,5,6,2,1 -4,0,3,5,1,6,2 -5,3,0,4,6,2,1 -5,3,6,4,1,2,0 -6,0,5,1,2,3,4 -2,0,5,6,3,1,4 -6,5,0,4,1,2,3 -2,4,0,1,5,6,3 -2,5,6,0,1,3,4 -5,3,4,0,6,1,2 -3,0,4,2,6,1,5 -3,4,0,5,6,2,1 -2,0,4,5,3,6,1 -3,0,4,2,6,1,5 -6,5,3,4,2,1,0 -5,3,0,2,6,4,1 -3,0,4,5,2,6,1 -6,2,1,0,3,4,5 -4,6,3,2,1,0,5 -1,2,5,4,3,6,0 -6,0,1,2,3,4,5 -2,3,1,6,0,4,5 -1,4,3,0,5,6,2 -6,5,0,2,1,4,3 -2,3,0,4,5,6,1 -4,5,0,2,3,6,1 -3,0,5,2,1,6,4 -5,0,6,4,2,1,3 -4,5,6,1,3,2,0 -4,6,1,2,5,3,0 -6,5,0,2,3,1,4 -4,0,3,6,2,1,5 -4,2,3,0,1,6,5 -3,2,6,0,1,4,5 -6,3,4,0,2,1,5 -5,4,0,6,3,1,2 -5,4,1,6,0,3,2 -2,0,6,4,3,1,5 -6,2,0,5,3,4,1 -5,4,3,6,1,2,0 -5,6,0,4,2,3,1 -6,4,5,2,3,0,1 -6,5,0,2,3,1,4 -3,0,6,4,1,2,5 -2,0,6,5,1,3,4 -5,0,3,1,2,6,4 -6,4,1,5,0,2,3 -1,0,6,2,5,3,4 -4,3,6,0,2,1,5 -4,0,6,1,5,2,3 -4,5,1,0,6,3,2 -3,5,0,4,6,2,1 -2,0,5,6,1,3,4 -6,5,4,1,0,3,2 -2,0,5,6,1,3,4 -5,3,4,0,6,2,1 -5,0,6,2,1,3,4 -5,6,0,4,2,1,3 -6,3,4,0,1,2,5 -2,0,1,6,3,4,5 -3,4,1,5,6,2,0 -6,2,4,0,5,3,1 -5,4,1,6,3,0,2 -3,0,5,4,1,6,2 -2,6,3,5,0,4,1 -4,0,3,1,2,6,5 -3,6,5,2,0,1,4 +1,6,4,2,5,3,0 +5,6,0,4,3,1,2 +1,4,0,6,5,2,3 +2,0,5,4,3,6,1 +6,3,4,0,5,1,2 +3,2,1,6,5,4,0 +1,5,6,0,2,3,4 +4,6,0,1,2,3,5 +1,6,5,2,0,3,4 +2,0,5,1,3,6,4 +1,4,5,6,0,2,3 6,3,4,1,0,2,5 -2,6,5,4,3,1,0 -6,5,0,1,3,2,4 -1,2,4,0,5,6,3 -6,0,3,5,2,1,4 -3,4,0,6,1,2,5 -2,0,5,4,1,6,3 -2,6,5,0,1,3,4 -2,3,6,0,1,4,5 -1,3,6,0,5,4,2 -1,4,3,0,5,6,2 +3,0,5,6,1,2,4 +1,0,5,6,3,4,2 +2,3,5,1,0,6,4 +1,6,5,0,3,4,2 +1,4,6,0,3,2,5 +3,0,1,2,5,6,4 +5,4,6,0,2,3,1 +5,3,0,4,6,2,1 +4,3,6,5,2,0,1 +3,2,5,4,6,1,0 +1,6,3,4,2,0,5 +4,3,6,2,1,0,5 +4,6,0,2,1,3,5 +2,6,3,4,1,0,5 +6,4,1,2,3,0,5 +2,0,4,6,1,3,5 +1,5,6,4,2,0,3 +6,4,1,5,3,2,0 +4,2,6,0,5,1,3 +1,6,0,2,5,4,3 +4,2,3,5,1,6,0 1,2,5,0,3,6,4 -5,3,6,4,2,0,1 -6,3,5,1,2,4,0 -2,5,0,6,1,4,3 -3,5,0,1,6,2,4 -1,5,6,0,2,3,4 +1,4,6,2,3,0,5 +2,3,6,0,1,4,5 +5,3,0,6,1,2,4 +2,5,4,1,3,6,0 +3,0,1,4,6,2,5 +5,2,4,0,1,6,3 +5,0,6,2,3,1,4 +4,2,6,5,0,1,3 +5,2,4,6,0,1,3 +3,6,1,0,5,4,2 +5,4,1,6,3,0,2 +1,0,6,4,5,2,3 +5,2,3,4,6,0,1 +5,3,4,0,6,1,2 +5,2,4,1,6,0,3 +4,5,3,6,2,0,1 +4,0,6,5,3,1,2 +1,0,4,6,5,2,3 +1,4,5,6,3,0,2 +4,5,3,0,6,2,1 +3,5,1,2,0,6,4 +5,3,1,0,6,4,2 +4,0,3,2,6,1,5 +5,6,4,2,3,1,0 +2,3,5,4,6,0,1 +6,0,5,2,3,1,4 +1,2,3,6,5,4,0 +5,2,4,0,6,1,3 +6,3,1,4,5,2,0 +1,2,4,0,3,6,5 +3,2,6,4,5,1,0 4,3,0,2,1,6,5 -4,0,1,6,5,3,2 -4,5,1,6,3,0,2 -4,5,6,1,2,0,3 -5,2,4,6,1,0,3 -1,5,6,2,0,4,3 -6,3,4,0,1,2,5 -6,0,1,5,2,4,3 -5,0,4,2,6,3,1 -1,6,0,4,5,2,3 -5,2,1,4,0,6,3 -6,0,1,5,2,4,3 -4,3,6,0,5,2,1 -5,3,0,1,2,6,4 -4,0,3,2,5,6,1 -6,2,4,5,3,1,0 +4,3,1,2,6,0,5 +2,3,6,5,0,4,1 +6,3,0,4,2,1,5 +4,2,6,1,0,3,5 +1,6,5,4,3,0,2 +4,5,0,1,6,2,3 +6,5,3,0,2,4,1 +3,5,4,6,1,0,2 +5,0,6,2,1,4,3 +1,4,5,0,6,3,2 +1,6,3,5,0,2,4 +3,5,4,6,1,2,0 +3,4,6,2,5,0,1 6,3,0,1,2,4,5 -4,6,1,2,5,0,3 -5,6,1,4,2,3,0 -6,3,4,0,5,2,1 -2,0,4,6,5,1,3 -6,4,1,2,5,3,0 -2,0,3,5,1,6,4 -2,4,5,6,3,0,1 -6,0,3,4,5,2,1 -3,5,0,6,2,4,1 -5,4,6,2,3,0,1 -2,0,5,6,1,3,4 -3,0,1,6,5,2,4 -6,5,4,0,3,1,2 -5,2,4,0,6,3,1 -1,6,4,5,2,0,3 -2,0,3,6,1,4,5 -3,0,4,1,2,6,5 -4,2,6,0,5,3,1 -4,6,5,2,0,1,3 -6,0,1,5,2,3,4 -6,0,5,1,2,3,4 -4,5,1,2,0,6,3 -4,3,1,2,5,6,0 -1,2,3,6,5,0,4 -1,3,5,0,2,6,4 -2,0,6,1,3,4,5 -6,2,0,4,5,1,3 +6,5,3,1,2,4,0 +3,2,4,6,5,1,0 +5,2,4,1,3,6,0 +4,3,1,5,6,0,2 +4,5,1,0,6,3,2 +4,0,6,5,3,2,1 +4,5,3,1,6,0,2 +4,3,6,5,2,1,0 +3,4,6,2,1,0,5 +5,0,3,4,6,1,2 +6,2,3,5,0,4,1 +6,3,0,2,5,1,4 +4,5,3,1,2,6,0 +4,2,0,6,5,3,1 +4,2,6,1,5,3,0 +1,4,5,0,6,2,3 +6,4,1,5,3,0,2 +3,0,6,2,5,4,1 +3,6,4,2,0,1,5 +2,5,6,4,1,0,3 +4,6,1,0,5,3,2 +1,2,4,6,5,3,0 +6,3,0,2,5,4,1 +5,3,1,2,0,6,4 +1,6,5,0,2,3,4 +1,4,6,5,2,3,0 +3,0,4,5,6,2,1 +6,2,4,5,3,1,0 +2,6,3,0,5,4,1 +6,2,3,5,1,0,4 +4,5,1,0,3,6,2 +2,6,4,0,3,1,5 4,0,5,6,3,2,1 -4,3,0,2,1,6,5 -2,3,5,4,6,1,0 -3,4,6,0,1,2,5 -6,3,1,5,0,4,2 -5,6,0,2,3,1,4 -6,5,4,2,3,0,1 -3,5,6,4,0,2,1 -2,5,0,6,1,3,4 +5,2,4,1,0,6,3 +2,6,1,4,5,0,3 +1,3,0,4,5,6,2 +6,0,3,1,5,4,2 +4,3,1,5,2,6,0 +3,5,1,6,0,2,4 +4,0,5,1,3,6,2 +2,6,4,0,5,3,1 +2,0,6,4,5,1,3 +4,6,0,5,2,3,1 +4,0,1,2,6,3,5 +6,4,0,2,1,3,5 +4,6,5,1,2,3,0 +6,5,0,1,3,4,2 +1,3,4,6,0,2,5 6,3,5,0,1,4,2 -1,6,5,4,3,2,0 -6,0,1,5,2,4,3 -3,6,4,0,1,2,5 -4,5,0,6,3,2,1 -4,6,3,5,1,0,2 -4,0,6,5,3,1,2 -3,6,0,5,1,4,2 -4,6,5,1,3,0,2 -6,2,4,5,3,1,0 -4,6,3,2,5,1,0 -3,0,1,5,6,4,2 -2,0,3,5,6,4,1 -5,0,3,4,1,6,2 -6,0,5,4,2,1,3 -2,0,6,5,3,4,1 -2,0,5,1,3,6,4 -2,5,4,0,6,1,3 +3,0,5,1,6,2,4 +4,3,5,2,0,6,1 +2,6,1,4,5,3,0 +2,5,6,1,0,3,4 +1,5,4,6,2,3,0 +1,3,6,5,2,0,4 +2,3,6,5,1,0,4 +2,0,5,6,1,3,4 +4,2,5,6,1,3,0 +6,2,4,5,3,0,1 +4,6,5,2,3,0,1 +2,4,3,5,6,1,0 +5,2,1,6,3,0,4 +5,0,4,2,3,6,1 +4,5,0,1,6,3,2 +5,0,6,2,3,4,1 +2,5,6,1,3,0,4 +6,2,0,5,1,3,4 +5,3,6,0,2,4,1 +1,3,4,0,6,2,5 +1,4,6,5,2,0,3 +3,0,4,2,1,6,5 +4,2,3,6,0,1,5 +4,2,0,6,5,1,3 +1,4,3,2,6,0,5 +4,2,1,6,0,3,5 +4,3,0,2,5,6,1 +3,5,0,1,6,4,2 +2,0,1,4,5,6,3 +5,4,6,0,1,3,2 +4,3,1,6,5,0,2 +1,5,3,2,6,0,4 +2,3,1,6,5,0,4 +4,5,0,1,2,6,3 +1,5,4,0,3,6,2 +3,6,4,1,2,0,5 +4,3,1,6,2,0,5 +4,2,1,6,3,0,5 +6,5,3,4,2,1,0 +3,4,6,1,0,2,5 +4,6,1,5,2,0,3 +4,6,0,5,3,1,2 +2,3,4,1,5,6,0 +2,6,3,0,5,1,4 +4,3,5,6,1,2,0 +5,4,0,2,6,3,1 +4,0,3,6,2,1,5 +6,4,1,2,5,0,3 +5,2,1,6,0,4,3 +2,4,5,1,6,0,3 +3,6,5,0,1,2,4 +4,6,5,2,1,0,3 +3,6,4,5,0,1,2 +2,3,5,6,1,4,0 +6,2,4,5,1,3,0 +1,3,0,5,2,6,4 +6,3,5,4,2,1,0 +3,4,1,2,6,0,5 +3,2,6,4,1,0,5 +5,2,1,4,6,3,0 +6,0,4,2,1,3,5 +4,5,1,2,3,6,0 +5,4,3,0,6,1,2 +5,3,4,2,1,6,0 +6,3,1,5,0,2,4 +6,5,0,1,2,3,4 +3,5,4,0,6,2,1 +4,2,5,6,1,0,3 +5,3,6,1,2,0,4 +1,0,4,6,5,3,2 +4,5,1,0,6,2,3 +6,2,4,1,5,0,3 +5,3,6,4,1,0,2 +1,2,4,6,5,0,3 +1,6,3,4,5,0,2 +2,3,1,4,5,6,0 +4,5,6,0,1,3,2 +4,5,0,2,1,6,3 +5,4,0,6,1,3,2 +6,4,1,5,0,2,3 +2,3,6,1,5,0,4 +4,0,6,5,2,3,1 4,2,5,6,0,3,1 -6,5,1,2,3,4,0 -2,0,6,4,1,3,5 -5,3,6,0,1,4,2 +4,5,1,2,6,0,3 +4,2,5,1,3,6,0 3,5,0,2,1,6,4 +6,0,5,1,2,3,4 +6,4,1,5,2,3,0 +1,0,5,2,6,4,3 +1,3,0,2,5,6,4 +4,5,0,1,3,6,2 +2,0,4,6,5,1,3 +3,6,5,4,0,2,1 +1,4,6,5,0,2,3 +6,4,5,1,3,0,2 +4,3,6,2,5,0,1 +3,5,1,4,0,6,2 +1,3,4,0,2,6,5 +4,3,6,1,5,0,2 +1,3,0,5,6,4,2 +2,0,4,6,3,1,5 +4,3,0,6,2,1,5 +3,4,0,5,6,2,1 +3,0,5,4,2,6,1 +6,4,5,1,0,2,3 +5,6,4,0,3,2,1 +2,6,3,5,0,1,4 +2,4,3,5,1,6,0 +6,5,1,0,2,3,4 +1,5,3,6,0,4,2 +3,2,5,4,6,0,1 +5,6,4,1,0,3,2 +3,5,1,2,6,4,0 +6,0,1,2,5,3,4 +1,2,4,5,6,3,0 +1,2,4,5,6,0,3 +5,4,0,6,2,1,3 +6,5,4,0,3,1,2 +4,6,1,2,5,3,0 +6,3,5,1,2,4,0 +2,6,3,5,0,4,1 +2,6,4,0,1,3,5 +3,0,4,1,6,2,5 +1,3,4,2,5,6,0 +3,2,5,0,6,4,1 +2,3,0,1,5,6,4 +6,2,4,1,3,0,5 +2,3,0,6,5,1,4 +1,2,4,0,5,6,3 +1,4,0,5,6,2,3 +6,3,4,0,1,2,5 +1,6,3,2,5,4,0 5,3,6,4,2,0,1 -3,6,4,1,2,0,5 -4,6,0,5,3,2,1 -6,5,4,2,1,0,3 -3,0,6,1,2,4,5 -2,3,4,6,1,0,5 -3,6,0,5,2,4,1 -3,0,1,5,2,6,4 -1,6,5,2,3,0,4 -5,0,3,1,6,4,2 -3,2,0,6,5,1,4 -2,0,6,4,5,3,1 -3,4,1,0,6,2,5 -4,0,3,2,5,6,1 -2,0,6,1,5,4,3 -3,0,5,4,6,2,1 -6,2,1,4,5,0,3 -3,0,5,4,6,1,2 -6,4,5,2,1,3,0 -5,3,4,2,0,6,1 -5,0,3,1,6,4,2 -4,5,1,6,0,3,2 -2,0,1,4,3,6,5 -1,0,6,2,5,3,4 -4,2,5,0,6,1,3 -6,0,4,1,3,2,5 -4,6,3,0,5,2,1 -5,0,1,6,3,4,2 -4,0,6,5,3,2,1 -2,0,3,6,1,4,5 -5,4,1,2,3,6,0 -4,0,3,6,1,2,5 -1,3,0,4,5,6,2 -2,6,0,4,5,3,1 -6,5,4,0,1,2,3 -5,3,0,2,1,6,4 -5,3,1,6,2,4,0 -3,6,0,4,1,2,5 -2,4,6,5,0,1,3 -4,2,1,0,6,3,5 -5,0,3,6,2,4,1 -6,0,3,1,2,4,5 -3,4,6,2,5,0,1 -5,6,3,1,2,4,0 -6,2,3,5,1,4,0 -4,6,3,1,5,2,0 -3,5,0,4,6,1,2 -4,6,1,5,3,0,2 +4,3,1,0,5,6,2 6,4,5,1,0,3,2 -2,5,1,6,0,3,4 -2,0,3,6,5,1,4 -6,0,5,4,1,2,3 -6,4,3,1,5,2,0 -6,3,0,4,2,1,5 -4,2,0,6,5,3,1 -3,5,4,6,1,0,2 -2,3,6,5,0,1,4 -1,5,3,4,0,6,2 -4,5,6,2,0,3,1 -6,4,5,0,1,2,3 -3,2,0,5,1,6,4 -1,3,5,0,6,4,2 -2,0,3,4,6,1,5 -4,0,5,6,3,1,2 -3,6,5,4,2,1,0 -3,6,1,4,5,0,2 -1,6,0,5,3,4,2 -4,6,0,5,3,1,2 -6,2,1,0,5,3,4 -5,6,0,2,1,4,3 -4,3,0,6,5,1,2 -2,6,0,1,3,4,5 -4,2,3,6,5,0,1 -2,0,3,5,1,6,4 -1,4,5,0,3,6,2 -4,2,3,0,5,6,1 -4,6,1,2,0,3,5 +2,3,0,4,5,6,1 +3,6,0,4,5,1,2 +4,3,5,2,6,0,1 +5,3,6,4,1,2,0 +6,0,4,2,3,1,5 +1,0,5,4,3,6,2 +4,6,5,2,1,3,0 +5,0,4,1,6,3,2 +5,4,6,1,2,3,0 +2,5,4,1,0,6,3 +5,0,6,4,1,2,3 +2,6,4,1,0,3,5 +3,2,4,5,1,6,0 +4,6,5,1,3,0,2 +6,4,5,2,0,3,1 +5,3,6,0,1,2,4 +1,4,3,0,5,6,2 +2,6,4,1,3,0,5 +4,2,5,1,0,6,3 +1,0,3,6,5,4,2 +4,3,6,1,2,0,5 +1,5,0,2,6,3,4 +5,0,6,4,3,2,1 +6,2,3,5,1,4,0 +5,4,1,6,2,3,0 +1,2,4,0,6,3,5 +6,0,1,4,2,3,5 +2,0,3,5,6,1,4 +1,0,6,4,3,2,5 +6,4,1,5,0,3,2 +5,3,1,2,6,4,0 +2,3,1,4,0,6,5 4,6,3,0,5,2,1 -5,0,6,1,3,2,4 -2,5,0,4,6,3,1 -6,0,5,2,1,4,3 -2,0,5,4,3,6,1 -6,4,1,2,5,3,0 -4,0,5,6,2,3,1 -3,5,0,4,2,6,1 -5,3,1,0,6,4,2 -2,3,6,4,5,1,0 -1,2,4,6,3,0,5 -4,2,0,6,5,3,1 -3,6,0,5,2,1,4 +1,3,4,2,6,0,5 +6,3,4,0,2,1,5 +4,5,3,6,0,2,1 +4,0,6,1,2,3,5 +6,5,1,2,3,0,4 +1,4,0,5,3,6,2 +1,2,4,5,0,6,3 +6,2,1,5,0,3,4 +4,6,5,2,0,3,1 +6,5,3,2,0,1,4 +5,6,3,2,1,0,4 +6,3,5,1,0,2,4 +1,3,6,2,5,0,4 +6,4,3,2,5,0,1 +1,5,0,6,2,3,4 +6,4,3,5,0,2,1 +4,3,5,6,0,2,1 +1,0,4,2,5,6,3 +3,0,1,4,5,6,2 +4,2,5,0,3,6,1 +1,0,3,5,2,6,4 +2,0,5,1,6,4,3 +5,4,1,6,3,2,0 +6,4,3,1,2,0,5 +2,4,0,1,3,6,5 +4,5,3,0,6,1,2 +6,5,4,0,3,2,1 2,5,6,1,0,4,3 -3,2,6,4,5,0,1 -3,0,5,6,1,4,2 -1,4,3,0,5,6,2 -5,0,4,6,1,3,2 -1,4,3,0,2,6,5 +3,0,1,6,5,2,4 +6,0,4,2,5,1,3 +4,2,1,6,5,3,0 +4,2,1,0,3,6,5 +5,2,1,0,6,4,3 +2,0,1,4,3,6,5 +2,3,4,6,5,0,1 +4,3,5,2,6,1,0 +6,3,4,0,5,2,1 +4,0,6,1,3,2,5 +4,3,0,6,1,2,5 +3,4,6,1,5,0,2 +5,6,3,0,2,1,4 +2,0,3,4,5,6,1 +2,3,6,5,1,4,0 +1,6,4,5,2,3,0 +6,5,3,2,1,0,4 +6,4,3,1,5,0,2 +1,0,5,2,3,6,4 +1,4,3,0,6,2,5 +1,6,0,4,3,2,5 +1,6,4,2,3,0,5 +5,3,1,6,0,4,2 4,5,1,6,0,3,2 -6,3,4,1,2,0,5 -6,0,3,2,1,4,5 -1,4,5,0,3,6,2 -5,0,6,1,3,2,4 -1,2,6,5,3,4,0 -3,6,1,5,2,0,4 -2,4,3,5,6,1,0 -5,2,0,1,3,6,4 -6,2,1,0,5,4,3 +5,4,6,1,2,0,3 +4,3,5,6,0,1,2 +4,3,5,1,6,2,0 +6,5,4,0,1,3,2 +1,6,3,2,5,0,4 +2,3,5,6,0,1,4 +5,2,4,0,6,3,1 +3,0,5,1,6,4,2 +2,5,0,6,1,4,3 +2,3,6,1,0,4,5 +5,0,4,2,1,6,3 +6,2,4,0,5,1,3 +5,2,3,6,1,0,4 +3,5,1,0,6,2,4 +4,2,1,5,0,6,3 +2,5,4,0,6,3,1 +2,3,5,0,6,4,1 +1,5,3,4,6,0,2 +4,5,1,6,2,0,3 +6,4,5,1,2,0,3 +1,0,3,6,2,4,5 +5,6,1,4,0,2,3 +4,2,1,5,3,6,0 +3,4,5,2,1,6,0 +5,4,6,2,0,3,1 +4,6,0,1,5,3,2 +2,5,0,4,1,6,3 6,2,3,4,1,0,5 -5,6,3,4,2,0,1 -5,6,4,0,1,3,2 -4,2,3,1,5,6,0 -5,4,3,6,0,1,2 -1,5,0,6,3,2,4 -6,2,1,5,3,4,0 -5,4,6,1,2,0,3 -5,4,3,6,2,0,1 -4,6,5,2,0,1,3 -2,6,3,4,1,0,5 -6,2,1,4,5,3,0 -5,3,0,6,2,4,1 -4,6,1,2,5,3,0 +6,5,4,1,0,3,2 +3,2,0,5,1,6,4 6,4,3,1,5,2,0 -1,5,3,0,2,6,4 -4,5,6,2,1,3,0 -3,6,5,1,0,4,2 -6,5,1,2,3,0,4 -6,4,1,5,3,2,0 -6,5,3,2,0,1,4 -3,5,0,2,1,6,4 -3,5,1,2,0,6,4 -5,4,0,6,3,2,1 -4,0,5,6,1,2,3 -2,5,3,4,0,6,1 -1,4,0,6,5,3,2 -6,4,5,2,3,1,0 -4,0,1,2,3,6,5 -5,0,1,6,2,3,4 -1,5,3,4,0,6,2 -4,5,0,6,1,2,3 -5,3,0,2,6,4,1 -4,5,1,2,6,3,0 -1,5,0,6,3,4,2 -4,6,0,1,3,2,5 +5,2,1,0,6,3,4 +2,4,0,6,1,3,5 +4,3,5,1,2,6,0 +6,2,0,5,3,4,1 +6,5,4,1,0,2,3 +6,2,1,5,3,0,4 +5,3,6,4,0,2,1 +4,3,0,5,6,1,2 +4,3,0,5,1,6,2 +5,2,3,6,0,1,4 +3,4,6,0,5,2,1 +5,4,6,2,1,0,3 +6,0,3,2,1,4,5 2,4,3,5,0,6,1 -4,0,6,2,5,1,3 -4,0,6,2,5,1,3 -4,3,6,1,0,2,5 -1,4,5,2,6,0,3 -4,3,1,2,5,6,0 -3,4,6,2,0,1,5 -4,6,5,2,0,1,3 -6,2,3,4,5,1,0 -1,4,0,5,3,6,2 -4,0,5,6,3,2,1 -2,3,4,5,6,1,0 -3,0,4,1,6,2,5 -5,2,0,6,1,3,4 -2,6,0,1,5,4,3 -6,5,0,4,1,3,2 -5,0,4,1,6,2,3 -2,0,4,1,6,3,5 -4,2,6,0,3,1,5 -6,2,1,0,5,3,4 -6,2,4,0,5,1,3 -4,0,5,1,3,6,2 -3,5,0,4,1,6,2 -3,4,5,6,0,1,2 -4,2,1,0,6,3,5 -6,0,3,5,1,2,4 -5,3,6,2,0,4,1 -4,2,6,0,1,3,5 -4,2,0,5,1,6,3 -3,4,5,1,6,0,2 -5,4,0,1,2,6,3 -3,6,1,5,2,0,4 -6,2,3,5,1,4,0 -3,4,5,6,0,2,1 -6,3,1,5,0,4,2 4,5,6,2,1,0,3 -4,3,0,6,5,1,2 -3,0,4,6,2,1,5 -6,5,0,4,3,1,2 -2,0,6,1,5,3,4 -2,6,4,0,1,3,5 -4,3,0,5,6,1,2 -4,5,1,0,2,6,3 -5,3,1,2,6,0,4 -2,4,0,5,1,6,3 -5,6,3,1,2,0,4 -5,3,6,4,1,0,2 -2,6,5,0,3,1,4 -6,5,3,4,1,2,0 -2,6,0,4,3,1,5 -2,0,3,4,5,6,1 -5,0,4,2,6,3,1 -4,0,5,2,6,1,3 -2,0,6,5,1,3,4 -6,0,4,2,5,1,3 -3,2,5,4,6,1,0 -2,6,0,1,3,4,5 +2,4,3,0,5,6,1 +2,6,5,1,0,4,3 +6,4,3,2,0,1,5 +4,2,1,5,6,0,3 +4,2,3,6,1,0,5 +4,5,1,6,2,3,0 +2,5,1,4,6,3,0 +4,6,3,2,1,0,5 +6,2,3,1,5,4,0 +3,4,6,0,5,1,2 +4,5,3,2,0,6,1 +6,5,4,0,2,1,3 +1,2,4,5,3,6,0 +6,2,3,0,5,4,1 +5,6,3,4,0,1,2 +4,2,3,5,0,6,1 +6,4,3,2,1,0,5 +5,6,3,0,2,4,1 +3,0,6,4,2,1,5 +4,3,5,1,0,6,2 +6,0,5,4,1,2,3 +6,4,5,2,0,1,3 +2,0,3,1,6,4,5 +1,0,5,6,3,2,4 +2,5,3,6,1,0,4 +5,3,1,4,6,0,2 +5,0,4,6,1,3,2 +1,0,6,2,3,4,5 +3,6,4,5,0,2,1 +1,3,4,5,6,0,2 +6,4,3,5,0,1,2 +2,6,4,5,1,0,3 +2,6,4,5,1,3,0 +5,3,6,4,0,1,2 +3,6,5,4,2,0,1 +1,6,5,4,3,2,0 4,0,5,1,2,6,3 -2,4,3,6,0,1,5 -6,5,0,1,2,3,4 -4,6,1,2,5,0,3 -1,3,0,5,6,4,2 -5,2,6,4,1,0,3 -6,4,5,1,0,3,2 -3,0,5,4,6,1,2 -3,0,6,2,5,1,4 -2,6,3,0,5,1,4 -4,2,6,0,1,3,5 -5,3,0,6,2,4,1 -2,5,6,4,3,0,1 -1,6,3,5,0,4,2 -3,0,1,5,2,6,4 -2,0,4,5,1,6,3 -1,4,6,5,3,2,0 -6,3,4,2,5,1,0 -1,0,5,4,2,6,3 +4,6,5,1,3,2,0 +2,5,3,0,1,6,4 +1,0,5,6,2,3,4 +2,6,4,5,3,0,1 +4,3,0,2,6,1,5 +2,3,5,0,6,1,4 +5,6,0,1,3,2,4 +5,6,3,4,2,1,0 +3,4,6,0,1,2,5 +5,2,3,4,1,6,0 +3,2,1,5,6,0,4 +5,6,0,2,3,1,4 +6,4,3,5,1,0,2 +6,0,4,5,1,3,2 +4,0,3,6,5,2,1 +1,5,3,0,2,6,4 +3,0,5,2,1,6,4 +2,4,0,5,1,6,3 +1,0,5,4,6,3,2 +2,4,6,1,5,3,0 +4,3,5,0,2,6,1 +5,6,0,2,3,4,1 +1,5,4,2,6,3,0 +1,0,5,4,6,2,3 +6,4,5,1,3,2,0 +3,2,6,5,1,4,0 +1,4,0,5,6,3,2 +4,2,3,0,1,6,5 +2,3,6,0,5,4,1 +5,6,0,4,1,2,3 +1,3,6,2,5,4,0 +3,5,0,4,6,1,2 +6,4,3,5,1,2,0 +5,3,6,2,1,0,4 +5,6,4,1,2,3,0 +3,6,4,5,1,0,2 +4,6,5,1,2,0,3 +6,4,3,5,2,1,0 +4,5,3,2,1,6,0 +3,2,1,4,5,6,0 +4,6,3,1,5,2,0 +1,6,0,4,2,3,5 +4,2,3,1,6,0,5 +5,6,0,4,2,1,3 +2,3,4,6,5,1,0 6,4,5,1,2,3,0 -6,3,5,4,1,0,2 -4,5,6,0,2,3,1 -4,5,3,6,0,1,2 -1,5,6,2,3,4,0 -2,0,4,5,3,6,1 -3,0,1,4,6,2,5 +1,0,5,4,2,6,3 +3,2,4,5,6,0,1 +6,5,0,1,3,2,4 +3,2,1,4,6,0,5 +2,4,0,5,6,3,1 +6,5,0,2,3,4,1 3,0,6,4,1,2,5 -4,2,6,1,5,3,0 -2,0,6,4,1,3,5 -1,5,6,4,2,0,3 -4,3,0,2,1,6,5 -4,2,1,6,5,0,3 -2,4,6,5,0,1,3 -3,5,0,1,6,4,2 -6,3,4,1,2,0,5 -5,4,3,6,0,2,1 -1,2,5,0,6,3,4 -2,4,3,5,0,6,1 -2,4,5,0,3,6,1 -3,0,5,4,6,2,1 -5,6,1,2,3,4,0 +6,2,1,5,3,4,0 +4,5,6,2,0,1,3 +3,0,4,1,2,6,5 +6,5,4,0,2,3,1 +5,3,4,2,6,0,1 +1,3,6,4,2,0,5 +5,3,6,2,0,4,1 +6,2,1,4,0,3,5 +5,3,6,2,0,1,4 +2,4,6,5,0,3,1 +3,2,1,5,0,6,4 +3,2,6,5,0,1,4 +5,3,1,6,2,0,4 +3,0,1,6,5,4,2 +5,6,0,4,2,3,1 +4,2,3,0,6,1,5 +6,2,1,0,3,4,5 +2,4,0,6,3,1,5 +4,6,3,2,5,0,1 +1,3,6,4,5,0,2 +2,5,1,6,3,4,0 +4,0,3,6,5,1,2 +4,3,0,5,2,6,1 +3,6,5,4,1,2,0 +4,2,3,1,5,6,0 +4,3,1,5,0,6,2 +2,0,6,4,5,3,1 +3,0,5,4,1,6,2 +5,3,6,1,2,4,0 +5,0,3,6,1,4,2 +2,4,1,0,3,6,5 +4,5,3,2,6,0,1 +2,6,5,1,3,4,0 +6,5,0,4,1,2,3 +2,4,1,0,5,6,3 +4,0,3,5,6,2,1 +6,0,5,2,3,4,1 +4,5,3,6,0,1,2 +4,5,6,2,0,3,1 +1,4,5,2,0,6,3 +6,5,0,4,2,1,3 +3,2,1,6,5,0,4 +6,5,1,0,2,4,3 +5,3,4,6,1,2,0 +1,0,4,2,6,3,5 +4,5,3,6,2,1,0 +2,0,1,5,6,4,3 +4,6,0,5,3,2,1 +5,6,1,4,0,3,2 +6,0,5,1,2,4,3 +6,5,3,1,0,2,4 +3,5,1,4,6,2,0 +1,0,3,4,6,2,5 +5,6,3,1,0,2,4 +3,5,1,0,6,4,2 +3,6,5,4,1,0,2 +2,5,1,6,3,0,4 +5,3,4,6,0,2,1 +1,3,6,4,5,2,0 +3,0,5,2,6,4,1 +3,5,0,4,6,2,1 +2,0,6,5,1,3,4 +2,6,4,5,3,1,0 +4,6,5,0,3,1,2 +4,2,3,1,0,6,5 +3,4,1,5,6,0,2 +3,5,0,4,2,6,1 +1,5,6,0,3,4,2 +5,2,1,4,3,6,0 +6,0,4,5,3,2,1 +2,5,1,4,6,0,3 +1,0,3,5,6,4,2 6,0,4,5,2,1,3 -5,0,3,6,2,1,4 -5,6,1,0,2,3,4 -5,3,0,6,2,1,4 -3,2,4,5,6,0,1 -5,3,0,1,2,6,4 -1,6,5,0,3,2,4 -3,0,6,5,1,2,4 -3,5,1,2,6,0,4 -2,6,4,0,1,3,5 -2,5,4,1,0,6,3 -2,0,6,1,5,3,4 -2,3,5,6,0,4,1 -4,0,1,5,6,2,3 -5,6,1,0,2,4,3 -3,0,6,4,2,1,5 -2,5,6,1,0,3,4 -6,4,5,1,2,3,0 -2,4,0,5,3,6,1 -3,4,0,5,6,2,1 -1,0,4,5,6,2,3 -1,0,5,4,2,6,3 -6,3,0,5,2,4,1 +4,5,6,1,2,3,0 2,5,1,4,0,6,3 -4,6,1,2,0,3,5 -2,0,4,5,6,1,3 -2,0,6,4,1,3,5 -3,0,5,1,2,6,4 -3,6,0,2,5,1,4 +5,6,4,0,2,1,3 +5,3,4,6,0,1,2 +4,6,3,2,5,1,0 +3,5,0,2,6,4,1 1,3,6,5,0,2,4 -6,0,5,2,1,4,3 +6,0,3,4,1,2,5 +3,2,4,0,1,6,5 +5,6,3,1,2,4,0 +4,5,6,0,1,2,3 +6,0,3,2,5,1,4 +1,0,4,2,3,6,5 +3,5,0,1,6,2,4 +4,6,5,0,1,2,3 +3,4,6,5,2,1,0 +1,6,0,2,5,3,4 +4,0,3,5,6,1,2 +4,6,0,1,5,2,3 +5,2,1,0,3,6,4 +4,0,3,2,5,6,1 +5,6,4,0,1,3,2 +5,6,3,4,0,2,1 +2,0,6,5,1,4,3 1,4,0,6,2,3,5 -4,5,3,6,0,2,1 -3,0,5,4,6,2,1 -5,6,0,1,2,3,4 -3,0,1,4,5,6,2 -1,5,6,0,2,4,3 -3,2,1,6,0,4,5 -1,0,3,4,5,6,2 -3,2,4,6,5,0,1 -5,0,3,6,2,4,1 -2,4,5,0,1,6,3 -4,0,1,2,6,3,5 -5,4,0,1,6,2,3 -6,0,5,1,2,3,4 -2,0,3,6,5,4,1 -6,4,3,5,0,2,1 -5,0,4,6,1,3,2 -3,0,5,1,2,6,4 -5,4,6,1,3,2,0 -4,5,0,6,1,2,3 +4,5,6,1,0,3,2 +4,3,1,6,5,2,0 +5,3,4,1,2,6,0 +5,2,3,1,6,4,0 +3,2,6,5,1,0,4 +5,2,3,0,6,4,1 +2,6,5,0,3,4,1 +1,4,3,2,5,6,0 +5,6,4,0,1,2,3 +4,5,6,1,2,0,3 +4,0,3,1,6,2,5 +4,3,5,0,1,6,2 +3,4,6,5,2,0,1 +5,3,4,1,0,6,2 +5,2,0,1,6,3,4 +3,4,6,5,1,2,0 +3,4,6,2,5,1,0 +5,2,3,0,1,6,4 +2,4,1,6,5,3,0 +2,0,1,6,3,4,5 +1,4,3,6,5,0,2 +3,2,5,0,6,1,4 +5,3,4,0,6,2,1 +1,4,5,0,2,6,3 +3,4,6,5,0,2,1 +1,4,5,2,3,6,0 +5,3,4,0,1,6,2 +5,3,1,6,2,4,0 +3,4,5,6,2,1,0 +1,4,5,2,6,0,3 +2,4,3,5,6,0,1 +5,2,0,6,3,1,4 +1,4,5,6,2,0,3 +2,4,3,0,1,6,5 +4,6,5,1,0,2,3 +5,2,0,6,1,3,4 +4,6,0,1,3,2,5 +2,6,5,1,3,0,4 +3,4,0,2,5,6,1 +1,4,5,6,2,3,0 +1,4,6,2,5,0,3 +3,4,5,6,2,0,1 +3,4,5,6,1,0,2 +5,0,4,2,6,1,3 +3,2,4,6,0,1,5 +5,0,4,1,6,2,3 1,4,6,2,5,3,0 -6,0,1,2,5,4,3 -3,0,5,2,6,4,1 -4,6,0,5,1,2,3 5,0,3,6,1,2,4 -6,2,5,4,0,3,1 -3,0,1,2,6,4,5 -1,6,4,0,5,2,3 -3,4,1,5,0,6,2 -1,2,0,6,3,4,5 -5,0,1,4,6,3,2 -2,5,3,4,6,1,0 -6,5,3,2,1,4,0 -6,2,3,4,0,1,5 -4,3,1,5,0,6,2 -6,0,3,5,1,4,2 -3,0,4,6,1,2,5 -6,0,4,5,3,1,2 -6,0,1,4,2,3,5 -3,0,5,2,6,4,1 -5,3,4,2,6,0,1 -6,4,5,2,3,1,0 -5,2,4,0,1,6,3 -5,6,1,2,3,0,4 -4,0,6,2,5,1,3 +1,5,0,2,6,4,3 +3,4,5,2,6,1,0 +1,5,0,4,2,6,3 +2,3,0,6,5,4,1 +1,5,0,4,6,2,3 +4,6,1,0,2,3,5 +4,6,5,0,3,2,1 +2,0,6,5,3,1,4 +1,6,0,2,3,4,5 +4,6,3,1,0,2,5 +4,6,3,1,2,0,5 +2,3,0,5,6,1,4 +4,6,5,0,2,1,3 +4,6,3,5,0,2,1 +1,5,3,6,0,2,4 +4,6,3,1,5,0,2 +3,4,5,2,6,0,1 +3,4,5,1,6,2,0 +3,4,5,1,6,0,2 +2,4,3,6,1,0,5 +1,5,0,4,6,3,2 +3,4,5,1,2,6,0 +3,4,5,1,0,6,2 +2,0,1,6,5,4,3 +1,5,3,4,0,6,2 3,4,5,0,6,2,1 -4,0,5,2,3,6,1 -5,3,1,4,6,2,0 -5,6,1,4,3,2,0 -6,5,1,0,3,4,2 -4,6,5,2,3,0,1 -6,0,4,1,5,2,3 -3,0,6,4,1,2,5 -2,6,4,1,3,0,5 -5,4,1,0,2,6,3 -3,0,4,5,6,2,1 -5,4,3,1,2,6,0 +3,4,5,0,6,1,2 +1,5,4,6,0,3,2 +3,4,5,0,2,6,1 +1,5,4,6,3,0,2 +3,4,5,0,1,6,2 +1,5,4,6,3,2,0 +2,3,0,1,6,4,5 +2,4,5,1,6,3,0 +1,5,6,4,0,3,2 +2,5,1,0,6,4,3 +1,5,6,4,2,3,0 +3,4,0,1,5,6,2 +1,5,6,4,3,2,0 +3,4,1,6,5,0,2 +2,0,3,1,5,6,4 +3,2,4,6,5,0,1 +2,0,4,6,5,3,1 +3,2,4,6,1,0,5 +2,3,0,4,1,6,5 +3,4,1,6,2,0,5 +2,4,6,5,3,0,1 +2,4,6,5,1,3,0 +3,4,0,1,2,6,5 +2,4,5,6,0,1,3 +2,3,0,5,1,6,4 +2,4,5,6,1,0,3 +2,4,5,6,3,0,1 +2,4,5,6,3,1,0 +2,4,6,0,5,3,1 +2,4,6,1,0,3,5 +2,4,6,5,1,0,3 +2,4,6,1,3,0,5 +2,4,6,1,5,0,3 o.random() -3,6,5,4,0,1,2 +3,4,1,5,0,6,2 o.dispose() diff --git a/test/involutions.txt b/test/involutions.txt index ff51061..a3d0d75 100644 --- a/test/involutions.txt +++ b/test/involutions.txt @@ -8,7 +8,7 @@ o.rewind() 0,1 1,0 o.random() -[ 0, 1 ] +[ 1, 0 ] o = Abacus.Permutation(3,{type:"involution"}) o.total() 4 @@ -19,7 +19,7 @@ o.rewind() 2,1,0 1,0,2 o.random() -[ 0, 2, 1 ] +[ 1, 0, 2 ] o = Abacus.Permutation(4,{type:"involution"}) o.total() 10 @@ -69,7 +69,7 @@ o.rewind() 4,2,1,3,0 4,3,2,1,0 o.random() -[ 4, 3, 2, 1, 0 ] +[ 0, 4, 3, 2, 1 ] o = Abacus.Permutation(6).filterBy(Abacus.Permutation.isInvolution) o.total() /* with filtering applied .total() and some other functions still return original data not the filtered ones */ 720 @@ -152,4 +152,4 @@ o.rewind() 5,4,2,3,1,0 5,4,3,2,1,0 o.random() -[ 0, 1, 2, 4, 3, 5 ] +[ 5, 4, 3, 2, 1, 0 ] diff --git a/test/multiset_permutations.txt b/test/multiset_permutations.txt index 37e763d..df38ce8 100644 --- a/test/multiset_permutations.txt +++ b/test/multiset_permutations.txt @@ -1279,186 +1279,186 @@ o.order("colex,reversed") 2,3,2,1,1,0 3,2,2,1,1,0 o.order("random") -1,2,1,2,3,0 -3,2,1,1,0,2 -2,0,1,1,2,3 -2,3,0,1,2,1 -2,2,1,0,1,3 +1,3,2,1,2,0 +1,2,2,1,0,3 +2,2,0,3,1,1 +1,3,0,2,1,2 +0,3,2,2,1,1 +2,1,0,2,1,3 +1,0,2,1,3,2 +0,1,3,2,1,2 +2,3,1,0,1,2 +1,3,2,2,1,0 +1,2,2,1,3,0 1,0,2,3,1,2 -1,2,0,1,3,2 1,0,3,2,1,2 -1,2,3,2,1,0 -2,1,0,3,2,1 -3,0,2,2,1,1 -3,2,1,1,2,0 -2,1,0,1,2,3 -3,1,0,1,2,2 -0,1,2,3,2,1 -1,0,2,3,2,1 -1,3,2,0,2,1 +1,1,3,2,2,0 +2,0,2,1,1,3 +0,1,1,3,2,2 1,1,0,3,2,2 -3,1,1,0,2,2 -2,2,3,1,0,1 -2,1,2,0,3,1 -1,2,1,0,3,2 -1,3,2,2,0,1 -2,1,3,0,2,1 -1,2,0,1,2,3 -1,1,3,0,2,2 -1,2,1,2,0,3 -1,1,2,0,3,2 -0,1,3,1,2,2 -2,0,2,1,3,1 -0,3,2,1,2,1 -2,1,0,2,1,3 -1,2,2,1,0,3 -2,1,3,2,0,1 -2,3,2,0,1,1 -3,2,1,2,1,0 -1,2,1,3,0,2 -0,2,1,1,3,2 +2,3,1,2,0,1 2,2,1,1,0,3 -0,2,3,1,1,2 -1,3,2,1,2,0 -1,2,0,3,1,2 -3,1,2,2,0,1 -1,0,2,1,2,3 -3,1,0,2,1,2 -1,2,2,3,0,1 -2,0,1,3,1,2 -2,1,3,2,1,0 -0,2,3,1,2,1 -3,0,1,1,2,2 -2,2,3,0,1,1 -2,0,3,1,1,2 -3,2,1,0,2,1 -0,1,2,3,1,2 -2,1,3,0,1,2 -3,2,1,0,1,2 -0,1,3,2,1,2 -1,2,0,3,2,1 -2,1,0,2,3,1 -1,0,2,2,1,3 +2,1,1,3,0,2 +2,3,0,1,2,1 +1,0,1,2,3,2 +3,1,2,2,1,0 2,1,2,3,1,0 -2,0,1,3,2,1 -2,3,1,0,2,1 -2,0,2,3,1,1 -0,2,2,3,1,1 -0,2,1,2,1,3 -1,1,3,2,2,0 -0,2,2,1,3,1 -2,0,3,2,1,1 -1,0,1,2,2,3 -1,2,3,0,2,1 -1,1,3,2,0,2 -3,1,2,1,0,2 -1,2,3,2,0,1 -1,0,3,2,2,1 -1,3,0,1,2,2 3,0,2,1,2,1 -2,0,2,1,1,3 3,1,2,0,1,2 -3,1,2,0,2,1 -1,3,2,2,1,0 -1,3,2,1,0,2 -1,2,0,2,1,3 -1,1,2,3,2,0 -2,3,1,2,1,0 +2,1,3,0,1,2 +0,3,1,2,1,2 1,2,2,3,1,0 -3,2,0,1,1,2 -0,1,1,2,3,2 -1,0,1,2,3,2 -2,1,0,1,3,2 -1,1,2,3,0,2 -1,1,2,2,3,0 -0,2,1,3,2,1 -2,0,1,1,3,2 +2,2,1,1,3,0 +1,2,1,0,2,3 +3,0,2,1,1,2 0,1,3,2,2,1 -1,2,0,2,3,1 +1,1,2,0,3,2 +0,2,2,1,1,3 +2,1,0,2,3,1 +2,1,2,0,3,1 +3,1,2,1,0,2 +2,2,3,0,1,1 +0,2,3,2,1,1 1,1,2,2,0,3 +2,3,0,2,1,1 +0,2,1,3,2,1 +1,2,0,1,2,3 +3,2,1,2,0,1 +1,2,0,2,3,1 +1,0,3,2,2,1 +1,0,1,3,2,2 +2,2,0,1,1,3 +1,0,2,2,3,1 3,1,1,2,2,0 -1,2,2,1,3,0 +0,1,2,2,1,3 +1,0,2,2,1,3 +2,0,2,1,3,1 +1,0,1,2,2,3 +1,3,2,0,2,1 +1,2,3,2,1,0 +3,0,1,1,2,2 +1,3,2,0,1,2 +2,1,3,0,2,1 +2,0,1,1,2,3 +1,0,2,3,2,1 1,2,3,0,1,2 1,2,3,1,2,0 -2,1,2,3,0,1 -3,2,2,1,0,1 -2,0,1,2,1,3 -1,3,2,0,1,2 -0,2,3,2,1,1 -1,0,1,3,2,2 -1,2,3,1,0,2 -1,2,1,0,2,3 1,1,2,0,2,3 -0,1,1,3,2,2 -1,1,0,2,3,2 -3,2,0,2,1,1 -2,0,1,2,3,1 -1,2,1,3,2,0 +2,1,0,1,3,2 2,0,3,1,2,1 -2,2,1,0,3,1 -1,0,2,2,3,1 -1,2,2,0,3,1 -2,1,1,2,0,3 -1,0,2,1,3,2 -1,3,1,2,2,0 -3,2,1,2,0,1 -2,1,0,3,1,2 -0,3,2,2,1,1 -1,3,1,2,0,2 -3,2,0,1,2,1 -1,3,1,0,2,2 -1,2,2,0,1,3 +1,3,2,1,0,2 +2,3,1,1,0,2 +0,2,1,2,3,1 2,1,1,2,3,0 +2,1,0,3,1,2 +1,2,0,3,2,1 +0,3,2,1,2,1 +2,1,2,0,1,3 +2,0,1,2,1,3 +2,1,0,1,2,3 +1,2,0,3,1,2 +1,2,0,2,1,3 +2,1,1,3,2,0 +0,1,2,1,3,2 +2,3,1,0,2,1 +1,2,1,3,2,0 +2,1,1,2,0,3 +0,1,2,1,2,3 +1,1,2,2,3,0 +1,3,0,1,2,2 +1,2,1,2,0,3 +2,3,0,1,1,2 +3,1,2,2,0,1 +3,1,1,2,0,2 +3,2,1,0,1,2 +1,3,2,2,0,1 +2,0,1,3,1,2 +1,3,0,2,2,1 +0,2,1,1,3,2 +1,2,1,0,3,2 +1,1,2,3,2,0 +2,1,1,0,3,2 +2,0,3,2,1,1 +2,1,1,0,2,3 +1,1,2,3,0,2 0,3,2,1,1,2 -0,3,1,1,2,2 -2,3,2,1,0,1 -1,1,0,2,2,3 -2,1,2,1,3,0 -2,2,0,3,1,1 -1,0,3,1,2,2 -0,1,2,2,3,1 0,3,1,2,2,1 -0,2,1,2,3,1 -0,3,1,2,1,2 +3,0,2,2,1,1 +0,1,3,1,2,2 +2,3,2,1,1,0 +3,2,1,1,0,2 +1,0,2,1,2,3 +3,2,0,1,2,1 +0,3,1,1,2,2 +2,0,3,1,1,2 +1,3,1,2,2,0 +0,1,1,2,3,2 +3,2,1,0,2,1 3,1,2,1,2,0 -1,3,0,2,1,2 -0,2,2,1,1,3 +2,1,2,3,0,1 +1,0,3,1,2,2 +1,2,3,2,0,1 +3,2,2,1,0,1 +0,2,2,1,3,1 +2,1,3,1,0,2 +1,2,3,0,2,1 +1,2,2,0,3,1 +2,2,0,1,3,1 2,1,2,1,0,3 -1,3,0,2,2,1 +1,2,3,1,0,2 +2,2,3,1,0,1 +1,2,0,1,3,2 +2,2,1,0,1,3 +1,2,2,3,0,1 +1,2,1,2,3,0 +2,0,1,3,2,1 +2,3,1,1,2,0 +1,1,3,2,0,2 +1,3,1,0,2,2 +2,2,3,1,1,0 +2,1,3,2,0,1 +2,1,2,1,3,0 +3,1,0,2,1,2 +1,1,0,2,3,2 +2,1,3,1,2,0 +3,0,1,2,1,2 +2,1,0,3,2,1 +0,2,3,1,2,1 +2,3,1,2,1,0 +1,1,0,2,2,3 +0,2,3,1,1,2 +2,2,1,3,1,0 +2,2,1,0,3,1 +3,2,0,1,1,2 +2,2,1,3,0,1 +2,0,2,3,1,1 +3,2,0,2,1,1 +1,1,3,0,2,2 +0,2,2,3,1,1 +1,3,1,2,0,2 +3,2,1,1,2,0 +1,2,1,3,0,2 +1,2,2,0,1,3 +3,2,2,1,1,0 +2,0,1,2,3,1 0,2,1,3,1,2 -2,1,1,0,2,3 +2,0,1,1,3,2 +0,2,1,2,1,3 0,2,1,1,2,3 -2,1,1,0,3,2 -2,1,1,3,0,2 +2,1,3,2,1,0 +2,3,2,0,1,1 +3,0,1,2,2,1 +2,3,2,1,0,1 +3,1,0,1,2,2 3,1,0,2,2,1 -3,1,2,2,1,0 -2,1,1,3,2,0 -2,1,2,0,1,3 -3,0,2,1,1,2 -2,2,0,1,1,3 -2,1,3,1,0,2 -0,1,2,2,1,3 -3,1,1,2,0,2 -0,1,2,1,3,2 -2,3,1,2,0,1 -2,3,2,1,1,0 -0,1,2,1,2,3 -0,1,1,2,2,3 -3,2,2,1,1,0 -2,1,3,1,2,0 +3,1,1,0,2,2 +0,1,2,3,2,1 +3,1,2,0,2,1 +3,2,1,2,1,0 3,2,2,0,1,1 -3,0,1,2,2,1 -2,2,0,1,3,1 -2,2,1,1,3,0 -3,0,1,2,1,2 -2,3,1,1,2,0 -2,3,1,1,0,2 -2,2,1,3,0,1 -2,2,1,3,1,0 -2,2,3,1,1,0 -2,3,1,0,1,2 -2,3,0,1,1,2 -2,3,0,2,1,1 +0,1,2,2,3,1 +0,1,1,2,2,3 +0,1,2,3,1,2 o.random() -2,3,0,2,1,1 +0,1,2,3,2,1 o.dispose() diff --git a/test/ordered_combinations.txt b/test/ordered_combinations.txt index 21d4ad0..c11b357 100644 --- a/test/ordered_combinations.txt +++ b/test/ordered_combinations.txt @@ -859,128 +859,128 @@ o.order("colex,reversed") 3,1,0 2,1,0 o.order("random") -5,1,2 -2,4,3 +3,1,4 1,4,2 -3,5,0 +5,4,2 +5,2,3 5,3,4 -5,1,4 -4,3,1 -4,2,0 -2,3,1 -0,4,3 -5,0,1 -3,5,1 -2,5,4 +5,3,2 +1,2,3 +0,5,2 4,1,0 -5,2,0 -5,3,0 -4,0,3 -2,1,4 -5,2,3 -4,1,3 -0,4,1 -4,1,2 -5,2,4 -0,3,5 -0,4,5 -0,2,3 -4,0,5 -1,2,4 -5,3,1 -0,2,5 3,0,5 -1,3,4 -5,4,2 -0,3,1 -3,0,1 -5,0,2 -2,4,1 -1,2,0 -2,3,5 -3,2,0 +2,0,3 +2,3,1 +5,4,1 2,3,4 -2,4,0 +0,4,2 +2,0,1 +4,5,0 +2,0,4 +1,0,3 +1,3,0 +3,4,0 +2,5,3 +0,2,1 +1,2,0 +2,5,4 1,4,3 -5,3,2 -4,2,3 2,0,5 -1,4,5 -1,2,3 -0,3,4 -1,0,5 -1,3,5 -5,4,3 -0,1,3 -4,2,5 +4,0,5 2,3,0 -1,2,5 -5,0,3 -1,0,4 -5,1,3 -0,5,1 -0,5,4 -0,1,5 -3,4,5 -0,1,2 -2,1,0 -0,3,2 -1,3,0 -1,5,0 -1,3,2 -0,4,2 -1,4,0 -5,1,0 -2,5,3 -4,3,0 -2,5,1 1,5,2 -1,0,2 -0,5,2 -5,2,1 -0,5,3 +4,1,2 +4,0,3 +3,2,4 +5,1,4 2,4,5 -5,0,4 -1,0,3 -2,1,5 +4,1,5 2,5,0 4,5,2 -4,3,5 -2,1,3 -5,4,0 -4,1,5 -3,0,2 -3,1,4 -2,0,4 -2,0,3 -1,5,3 -1,5,4 -0,2,4 -2,0,1 -0,2,1 -4,0,2 +4,2,0 +5,2,1 4,5,3 +2,1,0 +5,2,0 +4,0,2 +2,4,3 +0,2,3 +0,1,5 +3,0,1 +0,5,3 +0,3,5 +2,5,1 +1,4,0 +1,5,0 +1,3,2 +3,2,0 +5,1,2 +1,2,5 +3,5,2 +2,4,1 +4,0,1 0,1,4 +1,4,5 +4,3,2 +0,2,4 +5,3,1 +4,1,3 +5,0,1 +5,0,2 +3,5,0 +5,2,4 +1,5,3 +1,5,4 +2,1,5 +0,5,1 +2,3,5 +3,4,1 +3,4,2 +1,3,4 +3,4,5 +2,4,0 +3,1,5 +3,2,1 +0,4,3 +1,0,5 +5,0,3 +0,4,5 +5,3,0 +1,3,5 +5,1,3 +3,0,2 3,0,4 +0,1,3 +2,1,3 +5,4,0 +4,3,5 +2,1,4 3,1,0 3,1,2 -5,4,1 -4,5,1 -4,5,0 -3,1,5 -4,3,2 -3,2,1 -4,2,1 -3,2,4 -4,0,1 3,2,5 -3,4,0 -3,4,1 +3,5,1 +4,2,1 +0,3,4 +4,2,3 +5,4,3 +1,2,4 3,5,4 -3,5,2 -3,4,2 +0,2,5 +5,1,0 +1,0,4 +0,1,2 +4,2,5 +1,0,2 +4,3,0 +0,5,4 +5,0,4 +0,4,1 +0,3,1 +0,3,2 +4,5,1 +4,3,1 o.random() -3,5,4 +2,4,3 o.order("colex").range(-5, -1) 4,3,5 0,4,5 diff --git a/test/ordered_combinations_repeats.txt b/test/ordered_combinations_repeats.txt index 1b74fa7..6103336 100644 --- a/test/ordered_combinations_repeats.txt +++ b/test/ordered_combinations_repeats.txt @@ -894,133 +894,133 @@ o.order("colex,reversed") 1,0,0 0,0,0 o.order("random") -3,3,1 -1,4,1 -2,4,3 -4,3,2 -0,3,2 -4,4,0 +0,2,1 +1,2,2 +0,1,3 +0,2,4 +3,3,3 +4,4,2 +4,2,3 +1,1,2 +4,4,3 2,4,2 +3,3,4 +0,4,2 +1,3,1 +1,4,3 +1,3,4 +2,4,1 +4,0,2 +4,1,3 +2,0,2 +2,1,4 +4,1,4 +2,3,0 +4,0,0 +0,3,4 2,4,4 -3,2,0 -0,4,4 -0,4,1 +4,2,4 +2,4,3 +3,0,0 0,3,1 +4,2,0 +3,4,1 +0,4,1 +0,0,2 +4,3,0 +1,0,1 1,4,2 -1,0,0 +4,4,4 +4,4,0 +3,1,2 +0,1,0 +2,1,0 4,4,1 -0,0,3 +3,4,2 +4,1,2 +2,1,1 +3,4,0 +2,1,2 +0,0,0 +2,4,0 +2,0,0 +1,2,4 +0,0,4 +0,2,0 +2,0,3 +1,4,4 +2,0,1 2,2,1 -0,3,0 +4,0,1 +1,0,4 0,0,1 -3,1,4 -0,2,2 -3,2,1 -2,3,0 +0,4,0 +2,2,4 +0,4,4 +2,0,4 +2,1,3 +2,2,0 +3,2,3 +0,0,3 4,1,1 -1,1,2 -0,2,0 -1,4,0 -1,3,1 -1,3,2 -3,4,0 -3,2,4 -2,0,3 -0,0,2 -1,2,1 -2,4,1 -3,3,3 -3,3,4 -4,4,3 -1,0,1 +2,2,2 2,2,3 -1,1,3 -0,0,4 -4,1,2 -3,3,2 -0,2,4 -1,3,3 -1,1,0 -1,4,3 -4,2,3 -4,1,0 -0,2,3 -1,2,3 -4,3,3 -4,0,3 -1,0,4 -0,3,3 +3,1,0 +1,0,0 +0,2,2 +1,0,2 +0,4,3 2,3,1 -3,1,3 -3,0,2 -0,1,3 -3,0,1 -2,3,2 -1,4,4 -0,2,1 -1,3,4 +0,3,2 +0,3,3 2,3,3 -4,4,2 +2,3,2 3,4,3 -4,0,4 -2,0,0 -0,0,0 -3,3,0 -3,0,0 -1,1,4 -2,0,1 -4,4,4 -2,1,0 4,3,4 -2,0,4 -1,0,2 -0,4,2 -2,0,2 -4,0,0 -1,3,0 -3,2,2 4,3,1 -0,3,4 -2,1,1 -3,4,1 -1,2,4 -3,1,2 -1,2,2 -2,1,2 -0,1,4 -2,1,3 -2,2,4 -3,2,3 -0,4,3 -3,1,1 -3,4,2 +1,1,1 +0,3,0 +1,4,1 +3,4,4 +3,3,2 +1,4,0 +1,2,3 +0,2,3 +3,3,1 0,1,1 -0,1,0 -0,4,0 1,0,3 -2,3,4 -3,1,0 -4,2,4 -3,4,4 -4,0,1 -4,3,0 -1,1,1 -2,1,4 -1,2,0 +3,0,4 +0,1,4 +1,1,0 +1,1,3 +3,0,1 +1,3,3 +3,0,2 +1,3,2 0,1,2 +3,3,0 +4,3,3 4,2,2 -2,2,2 +1,1,4 +4,3,2 4,2,1 -2,4,0 -4,0,2 -4,1,3 -4,2,0 -2,2,0 -4,1,4 -3,0,4 +3,2,4 +1,2,0 +1,3,0 +4,1,0 +2,3,4 +4,0,4 +4,0,3 +3,2,2 +1,2,1 +3,2,1 +3,2,0 +3,1,4 3,0,3 -o.random() 3,1,3 +3,1,1 +o.random() +2,1,0 o.order("colex").range(-5, -1) 0,4,4 1,4,4 diff --git a/test/partitions.txt b/test/partitions.txt index b18b7bb..46d4c3d 100644 --- a/test/partitions.txt +++ b/test/partitions.txt @@ -66,7 +66,7 @@ o.order("colex,reflected") o.order("colex,reversed") 6 o.random() -2+1+1+1+1 +2+2+1+1 o.dispose() o = Abacus.Partition(8) o.total() @@ -172,7 +172,7 @@ o.order("lex,reversed") 2+1+1+1+1+1+1 1+1+1+1+1+1+1+1 o.random() -4+4 +2+1+1+1+1+1+1 o.dispose() o = Abacus.Partition(12,{output:"packed"}) o.total() @@ -498,7 +498,7 @@ o.order("lex,reversed") 2,1+1,10 1,12 o.random() -4,2+2,1+1,2 +5,1+4,1+3,1 o.dispose() o = Abacus.Partition(20,{output:"packed"}) o.total() @@ -3024,5 +3024,5 @@ o.order("lex,reversed") 2,1+1,18 1,20 o.random() -9,1+3,1+2,2+1,4 +5,2+4,1+3,1+2,1+1,1 o.dispose() diff --git a/test/permutations.txt b/test/permutations.txt index 34fe537..72128aa 100644 --- a/test/permutations.txt +++ b/test/permutations.txt @@ -1567,128 +1567,128 @@ o.order("colex,reversed") 3,4,2,1,0 4,3,2,1,0 o.order("random") +2,3,4,1,0 +2,4,1,0,3 +1,4,3,2,0 +2,3,1,0,4 +2,1,4,0,3 +4,2,0,1,3 +1,2,0,4,3 +1,3,2,4,0 +0,1,2,4,3 +2,3,4,0,1 +3,1,0,2,4 +1,4,2,0,3 +0,3,4,1,2 +1,4,0,3,2 +4,0,1,2,3 +1,0,3,4,2 +4,1,0,2,3 2,4,3,0,1 -2,1,0,4,3 -2,4,1,3,0 -1,3,4,2,0 -2,1,0,3,4 -0,4,2,3,1 -3,2,0,1,4 -3,1,2,4,0 -0,1,3,4,2 -2,3,1,4,0 -2,0,4,3,1 -1,2,3,4,0 -3,1,4,0,2 4,2,3,0,1 -4,3,0,1,2 -4,0,2,1,3 -4,2,0,3,1 -1,4,3,0,2 -4,3,0,2,1 +2,0,3,1,4 3,1,4,2,0 -3,2,1,0,4 +3,0,4,2,1 +2,3,0,1,4 +3,4,2,1,0 +4,2,1,0,3 +4,2,0,3,1 0,4,2,1,3 +4,3,2,0,1 +4,3,0,1,2 +1,0,4,2,3 +2,4,3,1,0 +2,1,4,3,0 0,2,1,4,3 -4,2,3,1,0 -2,4,0,1,3 -3,2,1,4,0 -0,4,1,3,2 -0,1,3,2,4 -0,2,4,3,1 -1,0,3,2,4 -1,3,2,4,0 -4,0,2,3,1 -0,4,3,1,2 +0,1,3,4,2 0,4,1,2,3 +1,2,3,4,0 +1,0,4,3,2 +4,1,3,2,0 +4,3,0,2,1 +0,2,3,4,1 0,3,4,2,1 -1,0,2,4,3 +0,1,2,3,4 4,0,1,3,2 -4,2,1,3,0 -4,3,2,0,1 -2,3,0,4,1 -0,4,3,2,1 -4,2,1,0,3 +2,4,0,1,3 +2,4,1,3,0 +0,2,3,1,4 1,0,2,3,4 -1,0,4,2,3 -3,4,1,2,0 +1,4,3,0,2 +2,4,0,3,1 +4,2,1,3,0 +3,2,0,4,1 +1,3,4,2,0 +4,3,2,1,0 +3,1,4,0,2 +0,3,2,1,4 +2,1,3,4,0 +0,2,1,3,4 +1,2,4,0,3 3,1,0,4,2 -0,3,4,1,2 -1,2,4,3,0 1,4,0,2,3 -3,1,2,0,4 -0,3,1,4,2 -2,1,4,0,3 -3,1,0,2,4 -1,4,3,2,0 -2,4,3,1,0 -4,3,1,0,2 -0,3,2,4,1 -3,4,1,0,2 -2,0,4,1,3 -2,1,3,4,0 -1,4,0,3,2 -2,3,4,1,0 -1,0,3,4,2 -4,2,0,1,3 +0,4,1,3,2 +3,0,1,2,4 1,3,0,4,2 -2,4,0,3,1 -4,1,3,2,0 +1,3,0,2,4 +3,0,1,4,2 +0,4,2,3,1 +1,4,2,3,0 +1,3,4,0,2 +3,0,2,1,4 +1,0,3,2,4 +0,1,3,2,4 +1,3,2,0,4 +2,0,1,3,4 +2,0,3,4,1 +1,2,4,3,0 +4,2,3,1,0 +2,0,1,4,3 +3,0,2,4,1 3,0,4,1,2 -1,0,4,3,2 -1,2,0,3,4 -0,1,2,4,3 -4,3,1,2,0 +0,4,3,1,2 +3,4,2,0,1 4,1,3,0,2 -0,2,3,1,4 -1,2,0,4,3 -0,3,2,1,4 +0,4,3,2,1 +3,2,0,1,4 +2,1,3,0,4 +0,3,2,4,1 +2,3,1,4,0 +2,3,0,4,1 +4,0,2,1,3 +2,1,0,4,3 +3,1,2,0,4 +4,1,2,3,0 +0,3,1,4,2 +1,2,3,0,4 +2,0,4,1,3 0,1,4,3,2 -2,0,1,3,4 -3,4,0,2,1 -2,3,0,1,4 -3,0,2,1,4 -3,4,0,1,2 -0,2,1,3,4 -3,0,4,2,1 -3,2,0,4,1 -3,0,2,4,1 -2,4,1,0,3 -4,0,3,2,1 +2,0,4,3,1 +3,4,1,2,0 +4,1,2,0,3 +1,2,0,3,4 +0,1,4,2,3 +1,0,2,4,3 +4,1,0,3,2 0,3,1,2,4 -2,0,3,1,4 -1,3,2,0,4 +0,2,4,3,1 +4,3,1,2,0 +2,1,0,3,4 +3,1,2,4,0 +3,2,1,0,4 +3,2,1,4,0 +3,2,4,0,1 0,2,4,1,3 -0,2,3,4,1 -2,3,4,0,1 -3,0,1,2,4 -0,1,4,2,3 -0,1,2,3,4 -1,2,3,0,4 +4,3,1,0,2 +4,0,3,2,1 4,0,3,1,2 -1,2,4,0,3 -4,3,2,1,0 -2,3,1,0,4 -3,2,4,0,1 -1,3,0,2,4 -1,4,2,0,3 -1,3,4,0,2 -4,1,0,2,3 3,2,4,1,0 -3,0,1,4,2 -4,1,2,3,0 -2,1,4,3,0 -1,4,2,3,0 -4,1,2,0,3 -3,4,2,0,1 -3,4,2,1,0 -4,1,0,3,2 -4,0,1,2,3 -2,1,3,0,4 -2,0,3,4,1 -2,0,1,4,3 +4,0,2,3,1 +3,4,1,0,2 +3,4,0,1,2 +3,4,0,2,1 o.random() -0,1,2,3,4 +3,0,1,4,2 o.order("colex").range(-5, -1) 1,2,0,3,4 2,0,1,3,4 diff --git a/test/subsets.txt b/test/subsets.txt index 77a66f3..148ce46 100644 --- a/test/subsets.txt +++ b/test/subsets.txt @@ -473,72 +473,72 @@ o.order("colex,reflected") o.order("colex,reversed") 5,4,3,2,1,0 o.order("random") -0,2,3 -2,4,5 -2,3,4,5 -2,3 - -0,2 -5 -1,2,4 -2,3,4 -1,2,4,5 -0,1,2,3 -0,1,4 +0,1,2 +0,1,2,3,4 0,1,3,4,5 -1,3,4,5 -3 +2,3,4,5 0,1,3,4 -0,2,4,5 -2,4 -1,3,4 -0,2,5 +0,1,3 +3,4 0,1,2,5 +2 +1,3,4 +1,2,5 +0,3,5 +1,3,4,5 +0,2,3,4,5 +3,4,5 +0,4,5 +1 +0,3 +2,3,5 +0,1,2,4,5 +2,3,4 +2,4 +0,1 +1,2,3,5 +1,3 +0,1,3,5 +0,1,2,3,5 +1,4,5 +3,5 1,3,5 +1,4 +0,2,3,5 +0,1,2,3 0,5 +0,1,2,4 +0,3,4,5 +0,2,4 +0,1,5 +2,4,5 +0,1,2,3,4,5 +1,2,4,5 +0 1,5 +4,5 +0,1,4 +1,2,3,4,5 0,4 -0,1,3,5 -0 -0,2,3,4 +1,2,3,4 1,2 -0,1,2,4 -1,2,3,5 -1,4 -0,1,3 -0,4,5 -0,3,5 -1 -2,3,5 -0,2,3,4,5 -0,3,4,5 -1,2,5 -0,2,3,5 -2 +2,3 +2,5 +3 +1,2,4 + +0,2,3 0,1,4,5 -0,1,2,4,5 -1,2,3,4,5 -4,5 +0,2,3,4 +4 1,2,3 +5 0,3,4 -3,4 -0,1,2,3,4,5 -4 -0,1,5 -2,5 -0,1,2,3,5 -1,2,3,4 -0,2,4 -0,1,2,3,4 -1,3 -0,1,2 -0,3 -0,1 -3,5 -1,4,5 -3,4,5 +0,2,5 +0,2 +0,2,4,5 o.random() -0,1,2,4 +3,5 o.dispose() o = Abacus.Subset(6,{type:"binary"}) o.total() @@ -1137,72 +1137,72 @@ o.order("colex,reversed") 0 o.order("random") -4,3,2,1 -3,0 -5,2 -4,3,1 -4,0 -3,2,0 -3,2 -5,4,0 +5,2,1,0 +4,2 5,2,1 -4,3,0 -5 -5,3,1 -4,1,0 -4,2,0 -4,3,2,1,0 -0 -4,3,2 -5,2,0 -5,1 -5,3 -5,3,2,1 -5,3,1,0 4 -3,2,1 -5,4,3,2,1 +5,1 +4,0 +4,2,1,0 +3,2,0 2,1 -4,3,1,0 -2,0 -5,4,3,2,0 +5,4 4,3 -5,4,2,1,0 -5,4,3,2 3,2,1,0 -5,4,3,1,0 -4,1 -5,2,1,0 -5,1,0 -4,2 -4,3,2,0 -5,3,2,0 3,1,0 +5,3,1 +4,1 +5,3,1,0 +5,4,3 5,0 +5,3,0 +5,4,0 +5,4,3,0 +4,2,0 +5 +5,4,3,2,1 +5,4,2 +4,3,0 +5,4,3,2 +5,4,3,2,0 3,1 -2 -3 -1,0 -4,2,1,0 -4,2,1 +5,3,2,0 +5,4,3,1,0 +5,3,2,1 +5,2,0 +3,2,1 +5,3 +5,4,3,1 +3,2 5,3,2 +5,1,0 +4,1,0 +3,0 +3 2,1,0 -5,3,0 -5,3,2,1,0 -5,4 -5,4,3 +2,0 5,4,1 -1 - -5,4,3,2,1,0 -5,4,3,1 +4,2,1 +4,3,1 +2 +1,0 +4,3,2,1 +4,3,1,0 +5,2 5,4,1,0 +4,3,2 +5,3,2,1,0 5,4,2,0 -5,4,3,0 5,4,2,1 -5,4,2 +1 +5,4,2,1,0 +4,3,2,1,0 +4,3,2,0 +5,4,3,2,1,0 +0 + o.random() -5,2,1,0 +3 o.order("colex").range(-5, -1) 0,1,3,4,5 2,3,4,5 diff --git a/test/tensors.txt b/test/tensors.txt index 5c06917..40a3743 100644 --- a/test/tensors.txt +++ b/test/tensors.txt @@ -61,12 +61,12 @@ o.order("colex,reversed") 1,0,0 0,0,0 o.order("random") -0,0,1 0,1,2 -0,0,0 0,1,1 -0,0,2 +0,0,0 0,1,0 +0,0,2 +0,0,1 o.random() 0,0,1 o.order("colex").range(-5, -1) diff --git a/test/tuples.txt b/test/tuples.txt index 63fe80e..c14b06f 100644 --- a/test/tuples.txt +++ b/test/tuples.txt @@ -208,35 +208,35 @@ o.order("colex,reversed") 1,0,0 0,0,0 o.order("random") -0,1,1 +2,0,2 +1,2,2 +1,0,1 +0,0,2 +2,0,0 +2,2,1 +1,1,1 0,2,0 -2,2,0 +1,2,1 0,1,0 0,1,2 -2,2,1 -0,2,2 -2,1,2 -0,0,2 -1,1,1 +2,1,1 +1,0,2 0,2,1 -0,0,1 -1,0,0 +2,1,0 0,0,0 -1,0,1 -1,0,2 2,2,2 -1,1,0 -2,1,1 -2,1,0 +0,0,1 2,0,1 -2,0,2 +1,1,0 +0,1,1 1,1,2 +2,2,0 +2,1,2 +0,2,2 1,2,0 -1,2,1 -1,2,2 -2,0,0 +1,0,0 o.random() -0,0,2 +1,1,1 o.order("colex").range(-5, -1) 1,1,2 2,1,2