Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 4183461[1X5 [33X[0;0YConstructing numerical semigroups from others[133X[101X234[1X5.1 [33X[0;0YAdding and removing elements of a numerical semigroup[133X[101X56[33X[0;0YIn this section we show how to construct new numerical semigroups from a7given numerical semigroup. Two dual operations are presented. The first one8removes a minimal generator from a numerical semigroup. The second adds a9special gap to a semigroup (see [RGSGGJM03]).[133X1011[1X5.1-1 RemoveMinimalGeneratorFromNumericalSemigroup[101X1213[29X[2XRemoveMinimalGeneratorFromNumericalSemigroup[102X( [3Xn[103X, [3XS[103X ) [32X function1415[33X[0;0Y[3XS[103X is a numerical semigroup and [3Xn[103X is one if its minimal generators.[133X1617[33X[0;0YThe output is the numerical semigroup [22X[3XS[103X ∖{[3Xn[103X}[122X (see [RGSGGJM03]; [22XS∖{n}[122X is a18numerical semigroup if and only if [22Xn[122X is a minimal generator of [22XS[122X).[133X1920[4X[32X Example [32X[104X21[4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);[127X[104X22[4X[28X<Numerical semigroup with 3 generators>[128X[104X23[4X[25Xgap>[125X [27XRemoveMinimalGeneratorFromNumericalSemigroup(7,s);[127X[104X24[4X[28X<Numerical semigroup with 3 generators>[128X[104X25[4X[25Xgap>[125X [27XMinimalGeneratingSystemOfNumericalSemigroup(last);[127X[104X26[4X[28X[ 3, 5 ][128X[104X27[4X[32X[104X2829[1X5.1-2 AddSpecialGapOfNumericalSemigroup[101X3031[29X[2XAddSpecialGapOfNumericalSemigroup[102X( [3Xg[103X, [3XS[103X ) [32X function3233[33X[0;0Y[3XS[103X is a numerical semigroup and [3Xg[103X is a special gap of [3XS[103X[133X3435[33X[0;0YThe output is the numerical semigroup [22X[3XS[103X ∪{[3Xg[103X}[122X (see [RGSGGJM03], where it is36explained why this set is a numerical semigroup).[133X3738[4X[32X Example [32X[104X39[4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X40[4X[25Xgap>[125X [27Xs2:=RemoveMinimalGeneratorFromNumericalSemigroup(5,s);[127X[104X41[4X[28X<Numerical semigroup with 3 generators>[128X[104X42[4X[25Xgap>[125X [27Xs3:=AddSpecialGapOfNumericalSemigroup(5,s2);[127X[104X43[4X[28X<Numerical semigroup>[128X[104X44[4X[25Xgap>[125X [27XSmallElementsOfNumericalSemigroup(s) =[127X[104X45[4X[25X>[125X [27XSmallElementsOfNumericalSemigroup(s3);[127X[104X46[4X[28Xtrue [128X[104X47[4X[25Xgap>[125X [27Xs=s3;[127X[104X48[4X[28Xtrue[128X[104X49[4X[32X[104X505152[1X5.2 [33X[0;0YIntersections, and quotients and multiples by integers[133X[101X5354[1X5.2-1 Intersection[101X5556[29X[2XIntersection[102X( [3XS[103X, [3XT[103X ) [32X operation57[29X[2XIntersectionOfNumericalSemigroups[102X( [3XS[103X, [3XT[103X ) [32X function5859[33X[0;0Y[3XS[103X and [3XT[103X are numerical semigroups. Computes the intersection of [3XS[103X and [3XT[103X60(which is a numerical semigroup).[133X6162[4X[32X Example [32X[104X63[4X[25Xgap>[125X [27XS := NumericalSemigroup("modular", 5,53);[127X[104X64[4X[28X<Modular numerical semigroup satisfying 5x mod 53 <= x >[128X[104X65[4X[25Xgap>[125X [27XT := NumericalSemigroup(2,17);[127X[104X66[4X[28X<Numerical semigroup with 2 generators>[128X[104X67[4X[25Xgap>[125X [27XSmallElements(S);[127X[104X68[4X[28X[ 0, 11, 12, 13, 22, 23, 24, 25, 26, 32, 33, 34, 35, 36, 37, 38, 39, 43 ][128X[104X69[4X[25Xgap>[125X [27XSmallElements(T);[127X[104X70[4X[28X[ 0, 2, 4, 6, 8, 10, 12, 14, 16 ][128X[104X71[4X[25Xgap>[125X [27XIntersectionOfNumericalSemigroups(S,T);[127X[104X72[4X[28X<Numerical semigroup>[128X[104X73[4X[25Xgap>[125X [27XSmallElements(last);[127X[104X74[4X[28X[ 0, 12, 22, 23, 24, 25, 26, 32, 33, 34, 35, 36, 37, 38, 39, 43 ][128X[104X75[4X[32X[104X7677[1X5.2-2 QuotientOfNumericalSemigroup[101X7879[29X[2XQuotientOfNumericalSemigroup[102X( [3XS[103X, [3Xn[103X ) [32X function80[29X[2X\/[102X( [3XS[103X, [3Xn[103X ) [32X operation8182[33X[0;0Y[3XS[103X is a numerical semigroup and [3Xn[103X is an integer. Computes the quotient of [3XS[103X83by [3Xn[103X, that is, the set [22X{ x∈ N | nx ∈ S}[122X, which is again a numerical84semigroup. [10XS / n[110X may be used as a short for [10XQuotientOfNumericalSemigroup(S,85n)[110X.[133X8687[4X[32X Example [32X[104X88[4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,29);[127X[104X89[4X[28X<Numerical semigroup with 2 generators>[128X[104X90[4X[25Xgap>[125X [27XSmallElements(s);[127X[104X91[4X[28X[ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 29, 30, 32, 33, 35, 36, 38,[128X[104X92[4X[28X39, 41, 42, 44, 45, 47, 48, 50, 51, 53, 54, 56 ][128X[104X93[4X[25Xgap>[125X [27Xt:=QuotientOfNumericalSemigroup(s,7);[127X[104X94[4X[28X<Numerical semigroup>[128X[104X95[4X[25Xgap>[125X [27XSmallElements(t);[127X[104X96[4X[28X[ 0, 3, 5, 6, 8 ][128X[104X97[4X[25Xgap>[125X [27Xu := s / 7;[127X[104X98[4X[28X<Numerical semigroup>[128X[104X99[4X[25Xgap>[125X [27XSmallElements(u);[127X[104X100[4X[28X[ 0, 3, 5, 6, 8 ][128X[104X101[4X[32X[104X102103[1X5.2-3 MultipleOfNumericalSemigroup[101X104105[29X[2XMultipleOfNumericalSemigroup[102X( [3XS[103X, [3Xa[103X, [3Xb[103X ) [32X function106107[33X[0;0Y[3XS[103X is a numerical semigroup, and [3Xa[103X and [3Xb[103X are positive integers. Computes [22Xa S∪108{b,b+1,->}[122X. If [3Xb[103X is smaller than [22Xa c[122X, with [22Xc[122X the conductor of [22XS[122X, then a109warning is displayed.[133X110111[4X[32X Example [32X[104X112[4X[25Xgap>[125X [27XN:=NumericalSemigroup(1);;[127X[104X113[4X[25Xgap>[125X [27Xs:=MultipleOfNumericalSemigroup(N,4,20);;[127X[104X114[4X[25Xgap>[125X [27XSmallElements(s);[127X[104X115[4X[28X[ 0, 4, 8, 12, 16, 20 ][128X[104X116[4X[32X[104X117118[1X5.2-4 Difference[101X119120[29X[2XDifference[102X( [3XS[103X, [3XT[103X ) [32X operation121[29X[2XDifferenceOfNumericalSemigroups[102X( [3XS[103X, [3XT[103X ) [32X function122123[33X[0;0Y[3XS, T[103X are numerical semigroups. The output is the set [22X[3XS[103X∖ [3XT[103X[122X.[133X124125[4X[32X Example [32X[104X126[4X[25Xgap>[125X [27Xns1 := NumericalSemigroup(5,7);;[127X[104X127[4X[25Xgap>[125X [27Xns2 := NumericalSemigroup(7,11,12);;[127X[104X128[4X[25Xgap>[125X [27XDifference(ns1,ns2);[127X[104X129[4X[28X[ 5, 10, 15, 17, 20, 27 ][128X[104X130[4X[25Xgap>[125X [27XDifference(ns2,ns1);[127X[104X131[4X[28X[ 11, 18, 23 ][128X[104X132[4X[25Xgap>[125X [27XDifferenceOfNumericalSemigroups(ns2,ns1);[127X[104X133[4X[28X[ 11, 18, 23 ][128X[104X134[4X[32X[104X135136[1X5.2-5 NumericalDuplication[101X137138[29X[2XNumericalDuplication[102X( [3XS[103X, [3XE[103X, [3Xb[103X ) [32X function139140[33X[0;0Y[3XS[103X is a numerical semigroup, and [3XE[103X and ideal of [3XS[103X, and [3Xb[103X is a positive odd141integer, so that [22X2S∪ (2E+b)[122X is a numerical semigroup (this extends slightly142the original definition where [3Xb[103X was imposed to be in [3XS[103X, [DS13]; now the143condition imposed is [22XE+E+b⊆ S[122X). Computes [22X2S∪ (2E+b)[122X.[133X144145[4X[32X Example [32X[104X146[4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);[127X[104X147[4X[28X<Numerical semigroup with 3 generators>[128X[104X148[4X[25Xgap>[125X [27Xe:=6+s;[127X[104X149[4X[28X<Ideal of numerical semigroup>[128X[104X150[4X[25Xgap>[125X [27Xndup:=NumericalDuplication(s,e,3);[127X[104X151[4X[28X<Numerical semigroup with 4 generators>[128X[104X152[4X[25Xgap>[125X [27XSmallElements(ndup);[127X[104X153[4X[28X[ 0, 6, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24 ][128X[104X154[4X[32X[104X155156[1X5.2-6 InductiveNumericalSemigroup[101X157158[29X[2XInductiveNumericalSemigroup[102X( [3XS[103X, [3Xa[103X, [3Xb[103X ) [32X function159160[33X[0;0Y[3XS[103X is a numerical semigroup, and [3Xa[103X and [3Xb[103X are lists of positive integers, such161that [22Xb[i+1]ge a[i]b[i][122X. Computes inductively [22XS_0= N[122X and [22XS_i+1=a[i]S_i∪162{a[i]b[i],a[i]b[i]+1,->}[122X, and returns [22XS_k[122X, with [22Xk[122X the length of [3Xa[103X and [3Xb[103X.[133X163164[4X[32X Example [32X[104X165[4X[25Xgap>[125X [27Xs:=InductiveNumericalSemigroup([4,2],[5,23]);;[127X[104X166[4X[25Xgap>[125X [27XSmallElements(s);[127X[104X167[4X[28X[ 0, 8, 16, 24, 32, 40, 42, 44, 46 ][128X[104X168[4X[32X[104X169170171[1X5.3 [33X[0;0YConstructing the set of all numerical semigroups containing a given[101X172[1Xnumerical semigroup[133X[101X173174[33X[0;0YIn order to construct the set of numerical semigroups containing a fixed175numerical semigroup [22XS[122X, one first constructs its unitary extensions, that is176to say, the sets [22XS∪{g}[122X that are numerical semigroups with [22Xg[122X a positive177integer. This is achieved by constructing the special gaps of the semigroup,178and then adding each of them to the numerical semigroup. Then we repeat the179process for each of this new numerical semigroups until we reach [22XN[122X.[133X180181[33X[0;0YThese procedures are described in [RGSGGJM03].[133X182183[1X5.3-1 OverSemigroupsNumericalSemigroup[101X184185[29X[2XOverSemigroupsNumericalSemigroup[102X( [3Xs[103X ) [32X function186187[33X[0;0Y[3Xs[103X is a numerical semigroup. The output is the set of numerical semigroups188containing it.[133X189190[4X[32X Example [32X[104X191[4X[25Xgap>[125X [27XOverSemigroupsNumericalSemigroup(NumericalSemigroup(3,5,7));[127X[104X192[4X[28X[ <The numerical semigroup N>, <Numerical semigroup with 2 generators>, [128X[104X193[4X[28X <Numerical semigroup with 3 generators>, [128X[104X194[4X[28X <Numerical semigroup with 3 generators> ][128X[104X195[4X[25Xgap>[125X [27XList(last,s->MinimalGenerators(s));[127X[104X196[4X[28X[ [ 1 ], [ 2, 3 ], [ 3 .. 5 ], [ 3, 5, 7 ] ][128X[104X197[4X[32X[104X198199200[1X5.4 [33X[0;0YConstructing the set of numerical semigroup with given Frobenius number[133X[101X201202[1X5.4-1 NumericalSemigroupsWithFrobeniusNumber[101X203204[29X[2XNumericalSemigroupsWithFrobeniusNumber[102X( [3Xf[103X ) [32X function205206[33X[0;0Y[3Xf[103X is an non zero integer greater than or equal to -1. The output is the set207of numerical semigroups with Frobenius number [3Xf[103X. The algorithm implemented208is given in [RGSGGJM04].[133X209210[4X[32X Example [32X[104X211[4X[25Xgap>[125X [27XLength(NumericalSemigroupsWithFrobeniusNumber(15));[127X[104X212[4X[28X200[128X[104X213[4X[32X[104X214215216[1X5.5 [33X[0;0YConstructing the set of numerical semigroups with genus g, that is,[101X217[1Xnumerical semigroups with exactly g gaps[133X[101X218219[33X[0;0YGiven a numerical semigroup of genus g, removing minimal generators, one220obtains numerical semigroups of genus g+1. In order to avoid repetitions, we221only remove minimal generators greater than the Frobenius number of the222numerical semigroup (this is accomplished with the local function sons).[133X223224[33X[0;0YThese procedures are described in [RGSGGB03] and [BA08].[133X225226[1X5.5-1 NumericalSemigroupsWithGenus[101X227228[29X[2XNumericalSemigroupsWithGenus[102X( [3Xg[103X ) [32X function229230[33X[0;0Y[3Xg[103X is a nonnegative integer. The output is the set of numerical semigroups231with genus [3Xg[103X.[133X232233[4X[32X Example [32X[104X234[4X[25Xgap>[125X [27XNumericalSemigroupsWithGenus(5);[127X[104X235[4X[28X[ <Numerical semigroup with 6 generators>, [128X[104X236[4X[28X <Numerical semigroup with 5 generators>, [128X[104X237[4X[28X <Numerical semigroup with 5 generators>, [128X[104X238[4X[28X <Numerical semigroup with 5 generators>, [128X[104X239[4X[28X <Numerical semigroup with 5 generators>, [128X[104X240[4X[28X <Numerical semigroup with 4 generators>, [128X[104X241[4X[28X <Numerical semigroup with 4 generators>, [128X[104X242[4X[28X <Numerical semigroup with 4 generators>, [128X[104X243[4X[28X <Numerical semigroup with 4 generators>, [128X[104X244[4X[28X <Numerical semigroup with 3 generators>, [128X[104X245[4X[28X <Numerical semigroup with 3 generators>, [128X[104X246[4X[28X <Numerical semigroup with 2 generators> ][128X[104X247[4X[25Xgap>[125X [27XList(last,MinimalGenerators);[127X[104X248[4X[28X[ [ 6 .. 11 ], [ 5, 7, 8, 9, 11 ], [ 5, 6, 8, 9 ], [ 5, 6, 7, 9 ], [128X[104X249[4X[28X [ 5, 6, 7, 8 ], [ 4, 6, 7 ], [ 4, 7, 9, 10 ], [ 4, 6, 9, 11 ], [128X[104X250[4X[28X [ 4, 5, 11 ], [ 3, 8, 10 ], [ 3, 7, 11 ], [ 2, 11 ] ][128X[104X251[4X[32X[104X252253254[1X5.6 [33X[0;0YConstructing the set of numerical semigroups with a given set of[101X255[1Xpseudo-Frobenius numbers[133X[101X256257[33X[0;0YRefer to [2XPseudoFrobeniusOfNumericalSemigroup[102X ([14X3.1-16[114X).[133X258259[33X[0;0YThese procedures are described in [DGSRP16].[133X260261[1X5.6-1 ForcedIntegersForPseudoFrobenius[101X262263[29X[2XForcedIntegersForPseudoFrobenius[102X( [3XPF[103X ) [32X function264265[33X[0;0Y[3XPF[103X is a list of positive integers (given as a list or individual elements).266The output is:[133X267268[30X [33X[0;6Yin case there exists a numerical semigroup [22XS[122X such that [22XPF(S)=PF[122X:[133X269270[30X [33X[0;12Ya list [22X[forced_gaps,forced_elts][122X such that:[133X271272[30X [33X[0;18Y[22Xforced_gaps[122X is contained in [22XN - S[122X for any numerical273semigroup S such that [22XPF(S)={g_1,...,g_n}[122X[133X274275[30X [33X[0;18Yforced_elts is contained in [22XS[122X for any numerical semigroup276[22XS[122X such that [22XPF(S)={g_1,...,g_n}[122X[133X277278[30X [33X[0;6Y"fail" in case it is found some condition that fails.[133X279280[4X[32X Example [32X[104X281[4X[25Xgap>[125X [27Xpf := [ 58, 64, 75 ];[127X[104X282[4X[28X[ 58, 64, 75 ][128X[104X283[4X[25Xgap>[125X [27XForcedIntegersForPseudoFrobenius(pf); [127X[104X284[4X[28X[ [ 1, 2, 3, 4, 5, 6, 7, 8, 11, 15, 16, 17, 25, 29, 32, 58, 64, 75 ], [128X[104X285[4X[28X [ 0, 59, 60, 67, 68, 69, 70, 71, 72, 73, 74, 76 ] ][128X[104X286[4X[32X[104X287288[1X5.6-2 SimpleForcedIntegersForPseudoFrobenius[101X289290[29X[2XSimpleForcedIntegersForPseudoFrobenius[102X( [3Xfg[103X, [3Xfe[103X, [3XPF[103X ) [32X function291292[33X[0;0YIs just a quicker version of [2XForcedIntegersForPseudoFrobenius[102X ([14X5.6-1[114X)[133X293294[33X[0;0Y[3Xfg[103X is a list of integers that we require to be gaps of the semigroup; [3Xfe[103X is295a list of integers that we require to be elements of the semigroup; [3XPF[103X is a296list of positive integers. The output is:[133X297298[30X [33X[0;6Yin case there exists a numerical semigroup [22XS[122X such that [22XPF(S)=PF[122X:[133X299300[30X [33X[0;12Ya list [22X[forced_gaps,forced_elts][122X such that:[133X301302[30X [33X[0;18Y[22Xforced_gaps[122X is contained in [22XN - S[122X for any numerical303semigroup S such that [22XPF(S)={g_1,...,g_n}[122X[133X304305[30X [33X[0;18Yforced_elts is contained in [22XS[122X for any numerical semigroup306[22XS[122X such that [22XPF(S)={g_1,...,g_n}[122X[133X307308[30X [33X[0;6Y"fail" in case it is found some condition that fails.[133X309310[4X[32X Example [32X[104X311[4X[25Xgap>[125X [27Xpf := [ 15, 20, 27, 35 ];; [127X[104X312[4X[25Xgap>[125X [27Xfint := ForcedIntegersForPseudoFrobenius(pf); [127X[104X313[4X[28X[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 16, 20, 27, 35 ], [128X[104X314[4X[28X [ 0, 19, 23, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36 ] ][128X[104X315[4X[25Xgap>[125X [27Xfree := Difference([1..Maximum(pf)],Union(fint));[127X[104X316[4X[28X[ 11, 13, 14, 17, 18, 21, 22, 24 ][128X[104X317[4X[25Xgap>[125X [27XSimpleForcedIntegersForPseudoFrobenius(fint[1],Union(fint[2],[free[1]]),pf);[127X[104X318[4X[28X[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 15, 16, 20, 24, 27, 35 ], [128X[104X319[4X[28X [ 0, 11, 19, 22, 23, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36 ] ][128X[104X320[4X[32X[104X321322[1X5.6-3 NumericalSemigroupsWithPseudoFrobeniusNumbers[101X323324[29X[2XNumericalSemigroupsWithPseudoFrobeniusNumbers[102X( [3Xg[103X ) [32X function325326[33X[0;0Y[3XPF[103X is a list of positive integers (given as a list or individual elements).327The output is: a list of numerical semigroups S such that PF(S)=PF. When328Length(PF)=1, it makes use of the function329[2XNumericalSemigroupsWithFrobeniusNumber[102X ([14X5.4-1[114X)[133X330331[4X[32X Example [32X[104X332[4X[25Xgap>[125X [27Xpf := [ 58, 64, 75 ];[127X[104X333[4X[28X[ 58, 64, 75 ][128X[104X334[4X[25Xgap>[125X [27XLength(NumericalSemigroupsWithPseudoFrobeniusNumbers(pf));[127X[104X335[4X[28X561[128X[104X336[4X[25Xgap>[125X [27Xpf := [11,19,22];;[127X[104X337[4X[25Xgap>[125X [27XNumericalSemigroupsWithPseudoFrobeniusNumbers(pf);[127X[104X338[4X[28X[ <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, [128X[104X339[4X[28X <Numerical semigroup>, <Numerical semigroup> ][128X[104X340[4X[25Xgap>[125X [27XList(last,MinimalGenerators); [127X[104X341[4X[28X[ [ 7, 9, 17, 20 ], [ 7, 10, 13, 16, 18 ], [ 9, 12, 14, 15, 16, 17, 20 ], [128X[104X342[4X[28X [ 10, 13, 14, 15, 16, 17, 18, 21 ], [128X[104X343[4X[28X [ 12, 13, 14, 15, 16, 17, 18, 20, 21, 23 ] ][128X[104X344[4X[32X[104X345346[1X5.6-4 ANumericalSemigroupWithPseudoFrobeniusNumbers[101X347348[29X[2XANumericalSemigroupWithPseudoFrobeniusNumbers[102X( [3Xg[103X ) [32X function349350[33X[0;0Y[3XPF[103X is a list of positive integers (given as a list or individual elements).351Alternatively, a record with fields "pseudo_frobenius" and "max_attempts"352option The output is: A numerical semigroup S such that PF(S)=PF. Returns353fail if it concludes that it exists and suggests to use354NumericalSemigroupsWithPseudoFrobeniusNumbers if it is not able to355conclude...[133X356357[33X[0;0YIt makes use of the function358[2XAnIrreducibleNumericalSemigroupWithFrobeniusNumber[102X ([14X6.1-4[114X), when359Length(PF)=1 or Length(PF)=2 and 2*PF[1] = PF[2].[133X360361[4X[32X Example [32X[104X362[4X[25Xgap>[125X [27Xpf := [ 83, 169, 173, 214, 259 ];; [127X[104X363[4X[25Xgap>[125X [27XANumericalSemigroupWithPseudoFrobeniusNumbers(pf);[127X[104X364[4X[28X<Numerical semigroup>[128X[104X365[4X[25Xgap>[125X [27Xgen := MinimalGeneratingSystem(last);[127X[104X366[4X[28X[ 38, 57, 64, 72, 79, 98, 99, 106, 118, 120, 124, 132, 134, 146, 147, 154, [128X[104X367[4X[28X 165, 168, 179 ][128X[104X368[4X[25Xgap>[125X [27Xns := NumericalSemigroup(gen); [127X[104X369[4X[28X<Numerical semigroup with 19 generators>[128X[104X370[4X[25Xgap>[125X [27XPseudoFrobeniusOfNumericalSemigroup(ns);[127X[104X371[4X[28X[ 83, 169, 173, 214, 259 ][128X[104X372[4X[32X[104X373374375376