【2020模拟赛day7】C. 括号序列

Catalan数其实就这几个常见的应用:

  • Catn表示长度2n的dyck word的个数。Dyck word是一个有n个X和n个Y组成的字串,且所有的前缀字串皆满足X的个数大于等于Y的个数。以下为长度为6的dyck words:

                     XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY

  • 将上例的X换成左括号,Y换成右括号,Cn表示所有包含n组括号的合法运算式的个数:

                     ((())) ()(()) ()()() (())() (()())

  • Catn表示有n个节点组成不同构二叉树(无法通过交换左右儿子互相转换的)的方案数。
  • Catn表示有2n+1个节点组成不同构满二叉树的方案数。
  • Catn表示所有在n × n格点中不越过对角线的单调路径的个数。一个单调路径从格点左下角出发,在格点右上角结束,每一步均为向上或向右。计算这种路径的个数等价于计算Dyck word的个数:X代表“向右”,Y代表“向上”。
  • Catn表示通过连结顶点而将n + 2边的凸多边形分成三角形的方法个数。

三个性质:

Cat_{n}=\frac{Cat_{n-1}*(4n-2)}{n+1}

Cat_{n}=C_{2n}^{n}-C_{2n}^{n+1}

Cat_{n}=\frac{C_{2n}^{n}}{n+1}

然后在简单打个表优化一下就可以了

但是我还是WA了两个点(一会儿改吧)

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
int ks[4005]={1,993385195,659189998,524916839,18014101,883502100,286641872,954187495,850837389,584887416,335860618,563094647,489743711,521334173,843326065,286617716,749335061,258654345,662907021,707215358,144650061,451452165,378181594,452797764,25110468,163524463,60429994,99238685,267131237,593593917,928117498,527506258,383842542,578251004,822062320,239578401,932375233,855591131,345876444,615334352,318732046,426786847,911684287,316975671,725463896,319038474,640891368,7353552,726441979,626954818,167808926,503390561,869764997,69658095,533073859,498900240,778865557,398018287,765850245,751341869,989944088,667577097,483486099,886251424,970528058,712082734,641209760,115177288,914011496,946337770,236482435,381309250,788928994,204448328,396459081,824441526,384846871,295483431,770392763,611850449,554027257,414802901,773692414,765417640,129962472,488573424,638074197,266756803,626876865,192765465,874984121,944168219,369123925,60481913,148718550,989092825,937873085,125882795,848033029,972225173,222278328,810053131,482472069,565689167,309548182,497980254,346506420,236334053,952251877,40082079,238037566,77878699,110821137,547720725,27325330,733700336,769103266,501254119,785173915,340290324,466803699,252607448,384229381,301391133,367243449,343352642,553839192,719135740,35475352,281911923,580754176,741615984,282630811,268011565,855008763,801038547,513879953,654667491,206775184,170528554,893194234,906513741,322778562,550247701,688090265,217255602,462212929,998742681,181868623,428858037,662442536,531123857,929550716,488038857,804511564,542748977,317167412,917838057,435303256,659191541,419071868,341341470,273963319,282466140,312373327,226436782,627087120,114367572,684357358,251414955,222202249,90440364,913132521,569460926,957350608,46002034,464326151,981274179,512052698,839584048,840409328,5635950,599100549,487012626,595749254,883413861,277832562,440198480,250310206,401217419,886943240,721074837,335026418,503052993,324092758,97775616,80284635,326819157,242106754,235325625,392201000,827710661,538374640,28690354,95437377,100693603,884232876,320668309,76561108,43697508,984010168,117580996,980619098,770971397,991229479,409919529,774014618,39546775,872722605,606553814,862974902,653730165,320149524,931270405,721465406,778715928,362602088,116872526,345105472,100559692,437154486,904552354,935604216,344425405,602977613,599276218,158325398,93069737,433209907,613053094,976515620,60282322,333002046,752010054,379457300,133155766,179241859,709661306,67813055,446653814,78420951,411543902,535315837,117750217,517959892,339342314,385061878,499072682,57377618,968722802,330571243,205863119,783598242,145796116,749295977,526010228,883268039,940907413,344949705,538925361,469031146,953726213,956105552,153838447,913150403,746238927,743089231,362113394,142825047,830251307,583470516,224898926,227622433,351990281,576903763,949020367,772791281,754190225,850436643,164244837,554774537,101010169,52829187,297033729,743020592,715543232,739288258,538040237,108105983,272038670,826616898,623633886,411319195,219758517,773058463,927134472,775457537,340490640,859196509,950335335,168424063,353653970,603402618,224513912,144374618,205611810,787054731,542714651,647021712,330260825,278830139,107669281,270453674,62068059,433486821,839220259,886690937,541379368,99516938,90212094,232966965,928230085,227346281,181140254,719625701,576310761,809002728,769922659,828804701,920385290,767410598,500725173,703550746,504034946,428275786,23085204,869949503,362541383,338787188,204464641,972917583,929397330,653616978,641332697,888596570,696279200,665430171,279314414,198384782,952747077,147269901,933018396,293323438,541567189,685483349,97863149,622160267,448364938,68065202,788470873,757001077,580452048,995437692,504247717,821425587,980313040,404389789,43899747,735342575,838880867,100791819,106424432,805093124,551660012,490088289,612964927,884529047,193556754,465656764,74188019,366369833,584795534,593650941,518920424,712920500,222554786,785561803,596150419,80558548,397073203,840940728,140738130,872279533,46296740,813426497,525107039,157604872,467386603,99859549,413298598,374112248,440635994,290902060,821408912,566460200,847848196,449891426,806911624,913607171,25314236,699849035,47084061,262992150,255863877,635407650,637087249,254294259,856032667,301118483,818265401,49988011,743749904,466376477,362639073,820814395,486190977,454901846,181421642,315020134,380809958,123728381,834494060,196127019,157307939,843056091,113578311,925192595,885708136,846469023,313112308,860735512,621130195,512982422,312344159,565079870,289237615,726458485,77243156,317478856,220084729,404587982,219742437,29992566,534942102,180039049,552648473,834260040,545838564,620572910,362728921,606383070,9870267,698786881,381077417,779866757,506231488,805260820,318345172,9234443,842596294,26429234,541190991,248658537,587810481,865365859,898758874,936437906,956061135,776729249,43506905,684849840,96354867,850853023,133816316,280104305,204611064,974897703,532155072,862278307,809613509,591564705,188373684,419323833,330275712,442417229,843259699,179394279,552683426,184269725,391847256,764283002,732642733,384375723,219759090,683818033,220065357,989237434,993545802,812616388,626167562,197324404,535520471,734684176,155220233,923424518,80634241,651871214,643777867,567052702,904980058,129817928,929861925,311479005,236385610,279101866,418159473,333074055,651009060,980532310,643296981,104654820,443443302,290058763,157503773,113199391,801356840,6871174,182801048,43541530,54005614,194008915,357810698,649845000,926347573,388320916,977900828,45432956,650437628,269706451,985058358,690548538,78422183,139915251,939879299,994909605,557132053,313840648,500352345,229015013,42230486,821668600,937949569,977285597,539265759,978304568,747656674,803962850,885645710,861115541,390967848,642581693,385578198,403953620,604589266,417908450,424046587,623524391,855721894,777675753,856602338,946951150,452925753,128850791,822855380,205539256,119671811,938982081,381670980,315852127,817067403,651030799,383330881,376115626,384678521,499816543,919882808,748916700,617951299,791837901,581017230,715392548,128229678,841797300,678179360,144113670,546048700,334527089,152086206,199138694,97516253,29315697,10879573,103765595,195240313,511807208,115206448,591901105,350220704,773537263,287548486,541371453,512711820,255618824,912840822,269637851,106058592,765686701,825751186,107672044,849382927,352331290,22839747,938939200,687853999,388887204,566712631,737387479,64618643,251140627,575272383,206664639,859487481,783339663,229341665,565447884,161174835,442002420,66145438,720359188,152333189,266235458,976261772,826030549,262932514,935924276,853425965,522604959,800722876,379020329,131456997,867114901,476685553,774121889,767896550,269722981,218530837,924838647,498955841,504728150,542559357,662001693,665489527,501404767,897900231,372734625,921744522,378186363,552920725,930418701,473803807,80068957,592108217,897955793,159899784,487101666,974283906,210147431,380217233,870202974,763324616,924317758,403886802,486573061,233377924,385662589,844610403,502427893,749209169,19783302,542929341,40289710,386148587,611039976,477676346,12127220,929038568,10138988,721539393,237179080,858662556,815006891,619688135,153889255,718834032,581039700,349655742,403412201,53704133,482661501,668381053,976689055,635621546,635369950,564459560,419869285,310050228,339426853,332258980,163322160,484911541,775337504,284634674,548661467,561090877,81070522,213869529,937078319,132975827,198736189,861358965,34101546,952053782,337343128,652826844,373855850,908080075,481343510,780087412,164126441,376734004,553759688,873983680,640292486,936114465,474508470,744779700,535150508,634055492,992528529,15437525,825380728,704356031,116048485,559622892,823443322,947123394,66617065,952923732,100621216,855057909,91666737,851659260,185065665,251712830,804964508,913796429,383794705,991849305,196900074,964943821,992357070,579689446,987138751,445557535,672847035,444321622,955352037,342305038,452766116,171126923,50404519,39285203,318258747,594410184,866557474,111952045,421583482,135788588,552647019,65595664,74031483,276175145,432938383,625778705,906059743,439670773,191985777,886393550,30516077,902979291,722173543,436143304,716938379,426105363,426801861,308874641,689398127,521991251,196332991,554925901,564424107,643156434,718351677,430967549,461385894,327793539,34667831,672492786,488780013,811521438,618688290,176638117,294294222,429424147,515073835,433879053,536656488,746223652,375206721,320173655,933395395,288107606,232989325,938954195,848892468,807022406,130198794,3045809,579975428,894969616,756760698,548438348,977436554,278540363,675776617,220917624,150109636,725721838,861305137,735169679,746218690,535502274,431439239,635740827,103691398,160783046,721397586,875593162,909301788,450418843,31014212,285398432,418855700,916095620,241001832,345930576,424395009,81073221,105611021,360022612,528336854,309490069,407688054,74297602,533200202,783592828,618725998,321554599,558332311,462266791,164076388,74984325,766451793,732234516,362390488,374637426,918733205,885288632,751984118,708221029,132140826,478113605,824959677,51433295,847423980,341974922,339094631,437472260,749840427,794594701,939937437,905707663,495192439,96819138,289114062,201973629,614633683,132699483,646119516,200312882,833261445,954183784,568132093,176270425,193119400,831654342,360631524,577887922,283467190,384125024,224060908,953291298,842083823,420208670,941103100,995707078,748617420,738698317,282823993,748366169,620330241,956391852,632419710,480291493,347332390,691509959,5299876,996427180,733941077,108743416,702118760,403650694,440437939,70753311,171996450,844850621,800764218,361513171,126196425,19041988,403302590,302918557,904796598,377183879,447327634,814435769,732494111,742948905,172362671,555139599,345875050,472312431,146454459,359071132,612999364,806616304,473140274,214575604,697394904,912389114,527017756,213400225,846615165,874836191,330246977,95287300,117782326,776010985,555935299,673037819,584952290,58292672,971300441,729222255,917452038,966965486,210543083,227889148,374360002,53016034,110516744,453490529,997722432,351860638,858912724,715880908,580524077,930632436,859733648,416134325,26834664,342127531,157547180,159967843,482151119,182900015,318648910,887350978,520151363,450547073,849290385,285137253,65294625,882995124,156482138,967884887,183796467,597965031,141672755,504064243,369617804,780354496,515252340,352496923,309497588,880834583,293073035,914987494,824526118,64531778,271629263,12609440,455521327,175291335,326503746,32561971,630030944,63377450,824367662,866571100,195407224,566134603,436936677,773424494,11910819,37319084,211203205,831526781,216483582,744132498,278421813,285709789,862345746,403879705,25946799,690037946,794451014,44859194,68998845,493851573,790576423,531188075,799332730,175729189,988582065,249681280,367174765,708848480,272043071,439955735,135190616,303788681,174030101,710206078,803126740,31148574,48577416,185848073,700956159,822493124,400541017,750132238,291010994,2417690,991637314,54154200,98974215,391941919,565495219,442839759,284176655,256394674,445160788,43513490,91335983,400855168,583784192,890963476,162521529,184866908,520730950,266971826,342180084,862709476,689688008,622432139,213354367,182102371,312974638,543247,428907343,530551580,789356644,229102214,526482101,839353385,984603023,170540287,899371235,614080807,497475319,205443584,191213863,1038738,706462959,661729991,633295711,489442098,700434331,903760883,165888123,110466872,43659707,544708986,761114871,957945047,140007737,678775583,527289137,835396981,477697076,848502274,400534375,961946116,571874802,62771953,851341358,964970426,354703747,530969856,31519616,420397913,274392673,106541642,876157639,451709036,359984410,496203486,74531190,845379974,641259599,190528692,46864955,441224057,341916485,93829281,145867184,747715262,66653701,652837318,735469492,948952430,814913703,292085651,126520791,449015101,904491450,560675444,107371939,833411368,670576989,213645233,994611728,718632736,773500756,849030854,195602780,89133095,922393771,43890002,502622238,123450958,551365013,971426953,199490892,307353660,658893175,198467869,763749916,751034518,505707381,660033627,727910812,121278376,474554880,628645621,716320035,829258116,703514787,882535290,262759490,610219395,140397723,983781226,831018085,273047196,666449333,286959606,28254947,184645929,337315005,888957144,235058473,838559273,750877537,249362417,723706946,702943792,412496677,785442919,339419203,327180619,508034832,823089783,591388059,996053098,395739583,290363292,681959805,972635793,427462538,369306487,914663773,59779351,267655835,766966558,491726575,438277435,772926775,427208069,279509148,872343766,305254099,875472689,169896938,88087624,555631159,964825237,434269323,833702888,639090751,797363670,949816619,276795263,887528394,65964121,884706539,969871550,69989055,674613386,272630226,477534018,349371021,754426282,566740080,345707456,674382670,913233920,633206254,863831882,509661672,416873296,460775591,780395660,414085541,784159202,465253705,721739311,835377409,339594075,435104066,981117173,690733012,150721121,253440769,509320325,214492417,246631500,622435124,300857278,481079497,827293565,935441795,306365938,113455452,39044254,771556083,184047350,999742921,481964964,853032834,917147861,681905782,686018065,8712334,290973603,984480492,974547384,266818878,898027224,825455543,171440849,5520732,752473368,221433127,122136599,97697727,826370359,627330879,267387345,930054806,843489827,601423864,578048980,99531417,892649542,645001042,993216391,433084216,274695989,692576623,958715961,203163887,899863454,19052654,589151398,722744658,731599534,701575805,590056381,295005870,275462640,649734192,842587301,451331407,977196860,761047766,62233161,965755041,275336760,662634433,276384123,446332707,885088843,72840411,178657044,682662363,369462967,861216489,37208627,924454496,35919351,417364302,529592963,618298795,343397212,355352558,772931771,86857707,860731728,631000964,749926448,372643201,867010732,586988890,980979683,261099789,501821227,182997672,545493982,3925874,724965747,762477662,941582672,904974319,158323083,989553574,53482490,559082441,927058564,627821890,769125226,284368401,496948759,585732308,727262694,153149243,904742276,676326021,213315006,591675128,162715149,860623803,752004241,236193799,63144489,629704658,785266155,602059176,489292141,630232011,388851437,233109441,692766896,955119676,592057942,72986574,268678088,293882467,861833945,14216057,865656442,759353438,526228276,855249791,318290618,522272165,294524314,712723443,104975569,977990475,798136127,928639933,846376278,700093294,364172998,846886858,79155832,294221191,104331447,253460188,490436695,493945497,265348408,796625670,805205538,340930303,623658195,638551464,412399277,12097173,794659656,386984065,194656913,377021333,984946338,516215989,364935281,923861254,412721407,94193816,297200189,528971455,154502171,361941790,764523099,127622503,963297586,533824634,222907100,393487750,240767149,149505105,80809797,172177041,208949409,375110720,518954890,220026261,572045611,212947936,499800957,755930185,66090955,474935932,543236430,653820344,502079787,555886493,573445777,702383714,957449649,855885072,907130478,588909403,610684737,257170138,859425315,638804725,799763770,999713748,325795762,81652230,504529288,818538935,414433367,233635544,424969440,994745516,971285228,180706675,89996356,975860881,975331176,803777216,217097256,401876948,25187237,713099193,159388347,754821298,779024924,137024212,636253155,233496888,965917437,142386370,672963743,23396746,73826481,455887783,593523687,591180871,737686940,158869127,45972141,433579056,737515396,901043375,581493878,141259376,662099217,796277614,682050856,822819638,857083323,600712676,672540521,44751890,292223468,962384746,170801822,199754721,956848484,145661390,553300341,638325691,306624411,166163073,215395351,196530494,289630361,1943236,858567841,372440210,490014918,143711983,314358077,331636652,343515473,162127396,583677216,98990793,425236722,727203746,280545771,776235234,214200018,1950514,719810018,217272735,829554135,29740234,354384391,951050062,375431643,189985291,912530424,467845505,193689884,879903555,567342077,314934545,515040015,280308358,517183407,824437032,424183009,717410599,126836497,390678967,702792555,200301060,306093955,549728084,368856885,821898944,600957699,887860116,635948704,244385247,10619229,260699243,921011515,616285898,802004713,454989108,906152879,816313276,936784111,881240019,288804281,831286390,818787551,129141720,327918408,819671494,619100477,68902309,88478970,569490534,620061158,794695075,122271863,553588206,365761272,890987959,585878494,689436867,885452153,579066422,246760071,507635296,244103966,158316164,874922621,549921234,889696529,336289657,963218767,556983264,373481701,492669356,233731798,10511971,25169324,621055399,462179924,235935875,368116862,738192922,646723796,58622741,15489769,920291062,175369438,916531658,456464040,796366217,724490489,883649989,500017041,299011199,13920726,510088931,736688578,244239873,816810916,890944030,311727313,771736812,477149632,539514127,162732098,581694519,998422628,913741436,775693059,659637419,110976544,254345740,448477964,676989596,325881464,29198293,987027626,968724901,595289382,127035991,582745847,895613258,649346617,552193432,959756765,196186107,115225751,169467188,120057409,939736792,910919584,850965220,893767915,904139201,280217320,137655046,816380520,109871775,613161489,634772450,89914268,995518190,979340485,167097040,340454897,310892311,345619785,451109974,789966924,493733826,909271880,42588101,198318486,119136191,93895908,867443752,26653156,958118764,392418197,713160336,597512416,663713885,374153383,496358225,786217964,637325163,986702458,824884977,389381850,4114327,135198737,801980098,403500597,843223519,391511828,825614203,827347153,26004342,665937816,555655736,560004231,286046279,196101315,486747388,977987294,670919073,196457992,381101011,675861887,460808426,353366753,688590355,236474749,276666920,891366478,946046038,732963199,132328240,466293699,259223603,194731635,599200604,549849192,708353686,321866316,271302667,205512804,703014797,142158788,596975270,256114404,412717755,355274047,508116714,606458379,173407591,197744149,820319812,511311771,527640489,280446128,156787053,220941934,262022065,57025381,676292743,962079266,476293547,686591069,754530659,803929011,409621591,232812662,179071210,441266802,302520061,673620510,491839671,561688220,839968614,579225120,247698225,621714477,869028792,212862447,879355533,599626755,692792381,484656148,489106026,23968259,498157771,804026616,651375129,417212068,481220296,332479895,405322553,703577148,607669200,860992522,714968540,285051921,371081938,138893763,936444616,834662397,817718356,365818969,979771717,734162144,533744422,706013997,779725397,856551435,556664474,828704185,577608889,333926283,755378150,27777697,560202895,535255484,570129417,979946661,640510273,917460866,901855117,888373051,476439112,401876085,118207639,488353822,453753775,584638044,695117856,862554744,282940002,762501501,133830122,477925444,659078323,725071783,416121411,621543538,149200016,468238752,28827323,887289080,206172677,246374811,95688057,893879607,329788238,501117294,538115955,653382154,196640438,554848545,581281735,999929017,28459288,565807016,866396420,319094367,530136478,126364944,754097554,675625971,275699866,977443160,9418430,317242164,379646033,237990699,977758865,848420651,682032411,883135963,611766903,643911666,38978727,598120398,298920142,27252117,941783172,909692413,74519997,657885928,462406509,624215904,256425252,959079901,456761787,568251199,191304833,597331028,392519731,467832585,189943741,747732870,895405147,797654453,28687237,295680321,392434975,89208188,696278177,464638813,699886201,857845885,482025946,473162535,672770020,612198388,92104085,232169652,607870455,319003324,85726159,670961154,266881388,382420000,302895801,210038104,207544939,525198486,491825522,975413620,152022067,134188854,753416506,4658698,450984561,976479076,194116678,609742797,532681812,854249105,550581419,730933233,426297398,327084814,202166736,85755794,911484592,282760175,846862481,428603855,100449250,757639212,122062501,566247781,419907515,184921644,625748319,479914466,536188391,60951630,722731618,289825065,326026090,282274387,334911623,579142079,299372049,395595476,138808507,855321160,100144549,908142736,324175814,421201055,194962343,45223412,79332475,233889794,615388958,758926795,372979497,973104366,141310348,748523434,485463688,228788942,736210186,132418704,506956900,671069795,208920223,433229114,457082998,867394426,292943746,490780946,563569310,575542652,674959481,671508439,686535602,799683210,654944139,204007563,530396737,874066900,364875239,12533004,334183331,910575441,303955643,688974573,810780074,644004094,546882843,650597597,674874058,779199258,329227396,221082113,277716213,486779832,855270688,665650422,834590084,379351625,830340947,48642648,827489553,66737884,220128383,325442961,373831508,763369243,659807966,842080378,801631980,632280900,663002428,106722858,485323077,805092342,104928628,356442277,742878862,533794702,152616343,299512296,15210430,822648986,169071745,210189343,558265469,796334778,983920232,285806954,509856409,781954106,848843574,95368046,82735258,709296328,455168619,11762772,355788073,177539024,893708178,813456520,691882872,720585197,505533860,665997400,326937757,431710884,10814807,802044392,215767114,826048345,322278082,143938725,614493008,627400790,459526008,292805958,153431387,250689056,267099074,679896679,819750062,234289488,930246225,91657450,148600772,979831779,723722987,319933413,77819133,992748256,371424715,525159253,772856241,423382760,636059160,772756248,210839702,117975280,947120670,917415025,529542832,349801974,388187315,762466921,480092280,701679336,469747342,951893816,915122980,147395125,767314967,855947357,47088512,643223088,579335505,238951226,893320760,708740657,414148019,944390004,200085875,367210225,186327218,570529462,879829023,614255381,189287680,735531467,771642980,27604736,570098544,69552898,812242958,171524537,402454233,405059800,760983461,333882740,924186464,308354124,115647895,659321474,214335030,635448933,433452254,318694939,403470520,236220035,614711350,769174025,283124902,781379553,676776227,111296143,593127018,929781988,123503160,272133427,561762462,411281136,202470123,283777684,661858818,301295401,985336304,89574951,748057712,188991085,762025802,99457331,952953461,758195860,648301746,772144590,117673488,826057456,718133914,156083570,819044442,903790260,715621202,746905602,851749606,643882165,334969337,668368033,76781736,443494575,140128070,637427469,840812600,838924619,163668120,505463512,110441916,472211307,590068228,341629066,47775320,465998566,206611675,94689279,609627934,370346151,887169971,711268799,212694904,180538000,747068064,243310214,132127005,147101001,645164200,835918560,733809629,374681996,399603434,501777860,600516072,725926124,250282937,448153087,175353484,576380910,704246918,119694495,421332396,704456553,628339229,819750436,690896448,4503263,523464653,812463449,351493409,980411650,151562132,356127278,699182127,191426844,152107306,645508204,495643292,767393703,840911534,41872390,532083995,703794632,547801289,902959609,823756350,360248095,544319866,42912802,157641557,203242358,276833175,734100495,996743455,940070881,697213165,25645633,185453353,601210053,187797498,447301451,895345742,513298487,337601386,839959682,370610385,907418075,507724057,489108699,153265907,391568534,29774090,156544632,238263394,379565312,357979421,14086063,160630665,279031519,414399920,695134135,13242144,502572238,670033142,668906571,78196956,734649172,151690776,652967921,511759876,181641405,435106492,549384382,736567540,894745790,270222900,151348632,829232595,268707349,55521810,719109284,774631911,470064852,167484856,162717731,670787914,398139171,658621875,496177807,742200103,651851581,892310934,850693745,10157318,266963542,146198914,491038043,906013288,620301438,785452428,709866528,48120899,169740459,204754757,391266888,392575017,938267591,211239500,896067250,157728527,28024303,989830904,583386057,72454901,892324485,289934162,258686289,826342552,21171401,855058806,739553303,34236911,766459751,199913778,641949852,68014751,66621960,780064899,401327156,591514650,493510290,906462824,475883398,645332905,888273888,147017097,831309512,534563138,703656590,979514665,187982277,1350552,413523783,110569871,979051859,140535966,330145654,354946514,689185553,390210596,909645506,302953413,875683995,913240683,460004295,418738106,735041493,312188587,403807586,461561403,919507554,863120608,794466085,4629188,219864084,655170121,70209087,219907566,15370099,252385364,624585857,168834982,651571174,647500080,313514951,12917290,461321523,386400924,645454161,125487313,724678522,206108393,683500891,757124504,244792786,190807383,353931445,823883633,163768057,198079908,785816624,497392647,483646617,100031107,566587341,919041466,55518037,508704698,401194363,200515929,530075989,641404691,535834925,687057137,67216766,334829278,446499796,614816618,289903094,867247213,657022611,885109408,755894508,605259693,230794043,38996409,329918306,951022912,886441456,671873543,767913210,290303888,937309577,725615399,624772230,740983492,867099672,438338526,234088796,43612463,123448671,181763736,426069326,346985753,504722578,640899416,383620612,959194999,118547976,645453141,8427238,733536648,965311092,52055432,666635846,455546657,436965864,794075212,679154104,611151794,471669523,529675916,233237878,382057057,235336936,872961202,497916326,122414324,685633673,921680793,717981064,45939489,556110986,346538665,132245940,157551769,754155812,76111743,693467072,249671391,178369494,197528405,283931439,159951299,447914188,818955077,322465437,871146654,342571217,380924866,278141134,845462210,981422602,908377645,879859089,963741722,974457428,86499759,360534997,428915711,308710849,879886095,387604278,748520813,131294295,793190049,47206779,623971943,351459179,233717070,397952175,361552068,148946141,229255095,546057725,694693783,729478073,571419000,93848052,496743013,532690061,888918441,843632272,765136173,159559905,386694780,666781865,607886111,697945194,774053430,136826403,249091338,360842113,349217778,474010089,938939254,188961665,409196032,978845690,444747251,925274072,867659441,845174720,293849504,46410444,640538496,385062441,334188645,928354875,575879521,267832150,780072225,288741479,878826216,216189326,786149992,472022717,556477047,170954100,709194865,670761056,716631389,194590985,538376597,650241778,266922512,978294610,393790142,919286902,793594816,987970319,225148839,768790519,551846973,10318566,72293624,380128631,608138128,174557761,38787541,755448591,633803917,167493066,147750767,300356025,215951440,113556131,303721284,32555852,204824531,869609932,320038303,628519760,956250747,555124443,930075950,91679878,671686822,879501924,750130465,299641760,863699371,193332595,251115217,475749703,685368984,947351351,457230974,589726553,523858286,729984126,195520131,379460100,609456405,762468539,431767552,577276920,631522308,337567895,257815814,135095319,532943607,750390822,168327597,125219639,390320956,198467821,308720445,422350520,729727471,757993056,930396380,43282974,115075841,39131252,726769614,679800378,306512568,671900285,34205451,263587205,149849719,951246674,136999859,284485577,137755236,318041646,644512528,82895306,339678331,261342531,627900203,937210215,871480773,740473885,401847271,166044760,478676748,799193176,37784638,420284957,120643194,647944965,446275019,420382041,3736007,273455707,972264950,856659538,649885662,448610032,830914991,366486476,717495162,779329259,244883874,139528589,976297819,704159169,206164,217754263,240702824,454412700,438273468,536568514,984160726,740716172,229464441,354468398,839808622,675096113,402929192,364587751,537039497,560943619,279508943,66783314,478166070,127080499,287305804,348443081,378313406,922511108,306984667,44160569,500804103,880695459,927691535,503125552,156444002,552812119,808603664,806838537,346590621,800052985,10219799,809697342,776597950,745833066,209401435,48280817,816771520,417658187,925433430,473467940,932065597,166923580,397026564,966095443,606835919,146902820,340606196,332830357,325418944,905881049,147791962,571225012,199613546,556601534,182510839,620763212,639178939,305062598,992986183,985323954,781312476,930895734,480048772,682254633,689408341,445003272,411302877,372940115,704546936,737323176,259698036,365358910,717996709,41186558,130712113,781730548,357231350,820353975,292552250,696618515,8634979,6973433,276507991,526791093,993548002,244745790,206789246,234188611,10385578,581109496,996243283,592887599,862726959,207568775,786961159,458885558,159150285,739305923,267551973,120254864,289656121,416961002,792858669,399121701,26940118,674315134,44492117,144821449,475563226,426222799,337496771,986573623,364186020,207369791,123217440,781894451,560842438,742647736,933620559,368311948,394204452,704698135,661381897,162363788,79120524,470360098,962869862,783894113,88862712,845973454,763105228,250500955,437879461,320131080,259377606,317508030,412713744,227212297,220133386,122530325,49429373,281374646,304840820,164000487,263383516,709477379,641243582,66139801,226059007,91223336,130147170,401320289,113300769,713248324,239248395,461089202,359471199,41022431,869522441,431884705,253897007,128724137,441829676,264293080,939108338,857862003,886573793,615557047,859791919,987631452,460039250,21480595,969529121,566238331,956771472,942468589,891632722,632744165,63614333,223186161,987179012,180425007,26015875,723095277,574805294,262926076,216943843,69012856,105394811,256310942,418278384,460087027,852641956,830421746,81472052,473545084,970405982,503581676,722281878,581965720,889949292,292805756,733572130,991785564,580288030,494051876,284380574,744401637,536539896,486495776,8212579,196636768,490399892,692357140,633307267,621832145,343336858,150748259,309335063,549350445,857967125,725056334,402906693,392380718,337460594,837576789,553854737,547964501,647029694,254997374,91503758,771429324,999622590,182324939,160457412,223538229,51701687,725318305,270354646,964590265,881019910,98125708,733786163,994601284,267084058,268612402,713828382,179440967,740276512,608957049,826646137,770775778,508795821,76613167,277900008,493068714,962438374,640407473,237576280,886732913,104480579,570225220,150635410,825125686,218296091,687815359,836324756,27623309,205369788,497240340,481944296,522665337,214156593,119372468,560466858,509215513,870025939,262338230,544555212,393691698,266026285,959574618,668859633,920800812,833014332,340161002,696424671,595821622,278014196,850282541,465492639,256772637,361536327,407688469,886735505,777677120,559764864,467460478,656780354,296615860,8485023,631513322,892329116,643069866,171347014,301059437,646499816,189218592,157288192,30391941,590039233,127333544,402420074,390773139,279289057,479206985,548838734,58700313,124476754,285841307,832694280,454035278,878625554,195909682,832477285,521190488,616797853,59833194,569019761,985551591,9775115,829731358,367800321,145364434,448786469,583992445,39986993,679085637,26478093,610886157,282629926,721302013,5981636,484998718,304954468,933241589,861237997,306526634,54107029,195156258,703005325,101177873,1600888,328064620,58195526,4016553,672992687,167910811,333963289,651905764,816743397,433830555,988413875,73193416,118874380,871696119,868580380,726537759,50632309,497976091,593811097,57593055,896131555,112246859,286537849,571915555,204577630,819974309,277336537,920087973,599644256,466357030,229839954,716691456,770930126,773937319,488153715,793866053,327909197,302331172,411108160,397100739,579923089,55426222,428689645,469515819,374917698,193588395,810501327,287219964,731387589,668084010,625324906,623993536,195554490,391452013,429389364,733709453,894486530,943000606,435947259,523147733,17645939,317988674,717913197,758380361,134670894,248140767,909109840,354678574,524721605,570756453,61361392,247471050,809826616,421950661,72543708,326944534,691636858,983563134,765698308,985254363,831869335,913276638,62210644,462837721,53408788,167375052,915047828,930108783,817192361,292783094,888348633,772588219,529923072,380565147,389967549,829601921,31868161,259163534,366544644,313671257,661725753,141756944,742432871,189027794,866621856,786299001,938383014,545527799,546815672,913263947,292222814,886085847,360964721,420617382,757531300,150636882,235954771,8750876,344673009,454557914,883413317,828614033,480478115,271504491,9729635,165320936,529426782,966355436,549986905,272262430,461783432,586574579,337961049,935212136,750693581,868837826,275458944,318009087,605837160,536521715,320783373,586322048,336375620,519788282,90881304,809264120,956130992,48076741,980531911,365991811,662281452,963414152,316235883,504253466,124835469,868175104,456045987,611978708,483218123,914255153,504598376,838460049,959815290,654143385,823278276,562973577,513250586,18840615,198694068,60795938,29065702,818615962,390809023,425137900,681467516,24453044,461996349,74666850,729636618,296357442,320390978,873500236,701600816,554867944,82056197,69948524,51025465,249109347,926556414,935118418,881613362,289073770,915958839,655942086,787900869,492468396,342222179,983511014,730767551,717463474,428841574,900312310,228687623,767468415,695956946,351798391,530874744,825919271,244747918,773044091,281912181,780418573,643674314,146940892,621272174,224308302,681262900,598038711,420493769,16054099,808478596,245498105,378224294,618525529,77646971,974239216,889377712,669009052,794893276,851646246,441363191,302675272,129572320,782847588,60821205,347978995,316843448,292441913,279286509,984751679,978150255,803075403,393296319,681058103,550715231,74293983,535461797,242901579,187454961,319283768,493667515,581792964,381242599,572080682,229027458,717348897,675605005,210422310,267915869,539886303,493049383,738868666,340843413,962147401,969857715,530259420,202244520,591146151,994067531,191710738,863433118,543285528,61887548,133284854,701078134,85219070,421849925,545434797,123867200,550611682,319280762,402333062,286576846,149656813,467374693,8399304,675892411,501759115,956075640,652300320,850466095,79872353,755468307,348432666,123146738,23981060,629859587,49085949,85483868,271843323,247494529,968746671,14473670,384928859,947843024,582722209,902859308,550013580,889204720,25094430,804416772,593014077,308719005,376879868,741191647,755350281,274728159,565679798,583556044,139449195,947028131,564955853,92002741,768040234,87026366,819322640,181412802,478920119,567711396,919762601,846135096,185325742,785786737,171574608,356951069,670605801,319513970,857325836,797535716,679276752,453144228,70879217,909853855,731853409,878444861,62980745,222979495,104737293,829984607,878009349,465722368,386425951,861550226,918120693,662828023,487358256,998846726,118976521,311024557,248115301,735716804,10956084,189788526,5621,708910937,28876981,451664374,8214051,398295816,189311069,368625028,229303212,112605837,542573392,348914319,404232226,163560648,90877599,294871478,306028131,343989195,933696701,972838640,551779149,460310637,152121078,637247688,512548093,967711803,488940719,606652566,841857072,97049128,303553213,624885123,229876802,298736911,152806502,919893146,539236843,346933461,673367284,315119462,527988906,609896446,287119402,482590616,581269483,594059810,3061473,813483452,479826762,730740290,817484630,636300292,424077532,109868049,427612417,851906004,318227793,922677219,672519835,922364580,616438812,88713183,730169238,860094805,856647961,484147888,313300920,354163589,523499291,987276009,830305745,297231672,548606333,906158611,258999573,91087546,311805574,848427919,830083853,487853090,397921540,907527492,772264208,56282335,649517237,588257246,995409529,90944287,781682616,158955222,51049353,369289212,433762399,612634981,719026753,119876110,880892497,671356732,447025697,777893109,343358201,633525895,48831718,667410337,612381345,770290435,979284421,298932395,777810726,510581130,587499198,630150622,296269757,393086393,880397452,874318669,437067210,329351492,323029217,683360968,5271357,754493576,307347243,119498369,253677040,949707339,536075220,469547532,302860254,759274703,728037900,507834940,860405222,933929848,782938240,260014462,352018585,598130613,112221615,171836488,606511552,891430096,41004489,175908097,944018157,804153606,719592370,800248597,726789026,371825258,439990021,248232432,824416165,779344872,135421597,57434699,25085686,989627606,454651478,936864504,981703157,991004666,645620132,954099006,32452938,669733602,154109399,387093216,378995966,342370637,809295425,9309000,115234053,682429037,467050046,143701469,650616409,75050325,297905509,761735656,680319479,655952554,420923228,505021576,566545714,498931165,356270968,10127536,86214567,722110373,637148038,802880664,975324824,929405654,19938269,970586935,831252466,933225061,707947772,704699345,741327190,971660874,511293780,622934128,875021219,640698671,558951109,454121461,281848757,242966096,19676117,404854673,456354781,44441340,190382129,952481058,590890900,951238092,107640928,104300953,939770093,796657151,594411855,423225928,759108006,652556518,334766943,110839958,894789024,642244075,157301604,813191714,184533568,634227997,849667709,618722786,64555561,818082,230838282,161956762,18165083,446260205,113543962,900429131,751473784,764018746,839832535,322771095,909713268,451787926,137449582,301875588,471144891,699447736,903093216,443756052,564891997,144560088,871790474,405216243,259842175,190555880,944827495,940946852,314967381,448335182,757053902,363035327,248321422,173007339,586964885,510197747,699792672,856911686,348181233,317840270,670095799,499295341,69084627,527109696,458470545,512612336,399661310,315930953,708122890,589345486,743187257,219464903,787544726,465653944,87841722,990485901,752248408,715616877,157923640,302789860,366150373,85675378,465330772,463445643,95104439,488059297,217036610,914083959,823624557,989078772,706239813,577838720,979418813,29636711,386563093,383232840,775164344,217293728,327243216,344184436,149296921,867564969,104607624,549059026,832574977,717638293,147458769,692287073,673573351,25365741,653058265,577986622,517386707,187187313,267945481,899352950,585054421,75171736,623799132,180837811,823445226,363817284,116738589,866183428,188996859,827253190,484496812,406659,323182173,158451159,440988449,149150376,507610275,233239888,723990230,318408771,853253535,553267697,131486640,496965176,805910950,613126270,10645395,27053440,579854541,68956800,380112227,545548111,176721485,934723699,20652056,244994610,716623935,56605996,924398368,438572614,345415180,651436872,395229632,607770892,354671742,132277215,642342374,812598882,701183306,384770918,678920854,391516962,460867192,492703176,402180241,365875860,764665366,993985283,12201530,2849200,982241715,380454648,391519276,549323014,951341155,614980327,288220896,598969753,542571039,343910671,324074679,784162949,324629843,118154263,155032769,786470500,576394201,950197330,798544236,121118187,253519960,787886399,424668356,854823206,172549636,150799927,766765801,718396655,183024467,647073713,323707607,134788770,747145728,379923339,481271015,838017427,96668287,310978853,349991207,953826891,630608853,513568896,506387095,742454941,355640128,428410294,727978520,646171336,27386841,647083910,117823016,799775427,294151414,428371897,489650130,141207001,517996566,424423195,988045309,82317638,700468745,907071686,894159539,951475846,664848723,177765306,352348135,472814669,794752132,277421258,452252059,600399156,653868469,776015401,35069889,668744431,176738146,56683333,869510056,958098774,91083111,964360365,227552640,33423545,411059510,392332412,783096015,301115040,120509226,958872584,72070155,759705502,568528406,834043496,161745472,331014619,608505508,872703239,590804404,324634182,167712853,362183309,885524720,974645512,255983822,682229852,489305872,709661040,810267805,271561147,937258824,883298353,367844439,813703360,536322225,291148181,794906902};
void exgcd(ll a,ll b,ll& d,ll& x,ll& y)
{
    if(!b){ d=a; x=1; y=0;}
    else
	{ 
		exgcd(b,a%b,d,y,x); 
		y-=x*(a/b); 
	}
}
ll rev(ll a){
    ll d,x,y;
    exgcd(a,mod,d,x,y);
    return d==1?(x+mod)%mod:-1;
}
int n;
char ss[100005];
int main()
{
	freopen("seq.in","r",stdin);
	freopen("seq.out","w",stdout);
	scanf("%d%s",&n,ss);
	int len=strlen(ss);
	ll ans=(n-len+1)%mod;
	int s=500001;
	ll t=(n-len)/2;
	ll pos=t/s;
	ll resn=ks[pos];
	for(int i=pos*s+1;i<=t;i++)
		resn=(resn*i)%mod;
	t=t*2; pos=t/s;
	ll res2n=ks[pos];
	for(int i=pos*s+1;i<=t;i++)
		res2n=(res2n*i)%mod;
	ll c=res2n;
	c=(c*rev(resn))%mod;
	c=(c+mod)%mod;
	c=(c*rev(resn))%mod;
	c=(c+mod)%mod;
	t/=2;
	ans=(ans*(c*rev(t+1)%mod))%mod;
	printf("%lld",(ans+mod)%mod);
	return 0;	
}

原来是特判不合法的情况 题目只保证了S合法!!!

AC代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
int ks[4005]={1,993385195,659189998,524916839,18014101,883502100,286641872,954187495,850837389,584887416,335860618,563094647,489743711,521334173,843326065,286617716,749335061,258654345,662907021,707215358,144650061,451452165,378181594,452797764,25110468,163524463,60429994,99238685,267131237,593593917,928117498,527506258,383842542,578251004,822062320,239578401,932375233,855591131,345876444,615334352,318732046,426786847,911684287,316975671,725463896,319038474,640891368,7353552,726441979,626954818,167808926,503390561,869764997,69658095,533073859,498900240,778865557,398018287,765850245,751341869,989944088,667577097,483486099,886251424,970528058,712082734,641209760,115177288,914011496,946337770,236482435,381309250,788928994,204448328,396459081,824441526,384846871,295483431,770392763,611850449,554027257,414802901,773692414,765417640,129962472,488573424,638074197,266756803,626876865,192765465,874984121,944168219,369123925,60481913,148718550,989092825,937873085,125882795,848033029,972225173,222278328,810053131,482472069,565689167,309548182,497980254,346506420,236334053,952251877,40082079,238037566,77878699,110821137,547720725,27325330,733700336,769103266,501254119,785173915,340290324,466803699,252607448,384229381,301391133,367243449,343352642,553839192,719135740,35475352,281911923,580754176,741615984,282630811,268011565,855008763,801038547,513879953,654667491,206775184,170528554,893194234,906513741,322778562,550247701,688090265,217255602,462212929,998742681,181868623,428858037,662442536,531123857,929550716,488038857,804511564,542748977,317167412,917838057,435303256,659191541,419071868,341341470,273963319,282466140,312373327,226436782,627087120,114367572,684357358,251414955,222202249,90440364,913132521,569460926,957350608,46002034,464326151,981274179,512052698,839584048,840409328,5635950,599100549,487012626,595749254,883413861,277832562,440198480,250310206,401217419,886943240,721074837,335026418,503052993,324092758,97775616,80284635,326819157,242106754,235325625,392201000,827710661,538374640,28690354,95437377,100693603,884232876,320668309,76561108,43697508,984010168,117580996,980619098,770971397,991229479,409919529,774014618,39546775,872722605,606553814,862974902,653730165,320149524,931270405,721465406,778715928,362602088,116872526,345105472,100559692,437154486,904552354,935604216,344425405,602977613,599276218,158325398,93069737,433209907,613053094,976515620,60282322,333002046,752010054,379457300,133155766,179241859,709661306,67813055,446653814,78420951,411543902,535315837,117750217,517959892,339342314,385061878,499072682,57377618,968722802,330571243,205863119,783598242,145796116,749295977,526010228,883268039,940907413,344949705,538925361,469031146,953726213,956105552,153838447,913150403,746238927,743089231,362113394,142825047,830251307,583470516,224898926,227622433,351990281,576903763,949020367,772791281,754190225,850436643,164244837,554774537,101010169,52829187,297033729,743020592,715543232,739288258,538040237,108105983,272038670,826616898,623633886,411319195,219758517,773058463,927134472,775457537,340490640,859196509,950335335,168424063,353653970,603402618,224513912,144374618,205611810,787054731,542714651,647021712,330260825,278830139,107669281,270453674,62068059,433486821,839220259,886690937,541379368,99516938,90212094,232966965,928230085,227346281,181140254,719625701,576310761,809002728,769922659,828804701,920385290,767410598,500725173,703550746,504034946,428275786,23085204,869949503,362541383,338787188,204464641,972917583,929397330,653616978,641332697,888596570,696279200,665430171,279314414,198384782,952747077,147269901,933018396,293323438,541567189,685483349,97863149,622160267,448364938,68065202,788470873,757001077,580452048,995437692,504247717,821425587,980313040,404389789,43899747,735342575,838880867,100791819,106424432,805093124,551660012,490088289,612964927,884529047,193556754,465656764,74188019,366369833,584795534,593650941,518920424,712920500,222554786,785561803,596150419,80558548,397073203,840940728,140738130,872279533,46296740,813426497,525107039,157604872,467386603,99859549,413298598,374112248,440635994,290902060,821408912,566460200,847848196,449891426,806911624,913607171,25314236,699849035,47084061,262992150,255863877,635407650,637087249,254294259,856032667,301118483,818265401,49988011,743749904,466376477,362639073,820814395,486190977,454901846,181421642,315020134,380809958,123728381,834494060,196127019,157307939,843056091,113578311,925192595,885708136,846469023,313112308,860735512,621130195,512982422,312344159,565079870,289237615,726458485,77243156,317478856,220084729,404587982,219742437,29992566,534942102,180039049,552648473,834260040,545838564,620572910,362728921,606383070,9870267,698786881,381077417,779866757,506231488,805260820,318345172,9234443,842596294,26429234,541190991,248658537,587810481,865365859,898758874,936437906,956061135,776729249,43506905,684849840,96354867,850853023,133816316,280104305,204611064,974897703,532155072,862278307,809613509,591564705,188373684,419323833,330275712,442417229,843259699,179394279,552683426,184269725,391847256,764283002,732642733,384375723,219759090,683818033,220065357,989237434,993545802,812616388,626167562,197324404,535520471,734684176,155220233,923424518,80634241,651871214,643777867,567052702,904980058,129817928,929861925,311479005,236385610,279101866,418159473,333074055,651009060,980532310,643296981,104654820,443443302,290058763,157503773,113199391,801356840,6871174,182801048,43541530,54005614,194008915,357810698,649845000,926347573,388320916,977900828,45432956,650437628,269706451,985058358,690548538,78422183,139915251,939879299,994909605,557132053,313840648,500352345,229015013,42230486,821668600,937949569,977285597,539265759,978304568,747656674,803962850,885645710,861115541,390967848,642581693,385578198,403953620,604589266,417908450,424046587,623524391,855721894,777675753,856602338,946951150,452925753,128850791,822855380,205539256,119671811,938982081,381670980,315852127,817067403,651030799,383330881,376115626,384678521,499816543,919882808,748916700,617951299,791837901,581017230,715392548,128229678,841797300,678179360,144113670,546048700,334527089,152086206,199138694,97516253,29315697,10879573,103765595,195240313,511807208,115206448,591901105,350220704,773537263,287548486,541371453,512711820,255618824,912840822,269637851,106058592,765686701,825751186,107672044,849382927,352331290,22839747,938939200,687853999,388887204,566712631,737387479,64618643,251140627,575272383,206664639,859487481,783339663,229341665,565447884,161174835,442002420,66145438,720359188,152333189,266235458,976261772,826030549,262932514,935924276,853425965,522604959,800722876,379020329,131456997,867114901,476685553,774121889,767896550,269722981,218530837,924838647,498955841,504728150,542559357,662001693,665489527,501404767,897900231,372734625,921744522,378186363,552920725,930418701,473803807,80068957,592108217,897955793,159899784,487101666,974283906,210147431,380217233,870202974,763324616,924317758,403886802,486573061,233377924,385662589,844610403,502427893,749209169,19783302,542929341,40289710,386148587,611039976,477676346,12127220,929038568,10138988,721539393,237179080,858662556,815006891,619688135,153889255,718834032,581039700,349655742,403412201,53704133,482661501,668381053,976689055,635621546,635369950,564459560,419869285,310050228,339426853,332258980,163322160,484911541,775337504,284634674,548661467,561090877,81070522,213869529,937078319,132975827,198736189,861358965,34101546,952053782,337343128,652826844,373855850,908080075,481343510,780087412,164126441,376734004,553759688,873983680,640292486,936114465,474508470,744779700,535150508,634055492,992528529,15437525,825380728,704356031,116048485,559622892,823443322,947123394,66617065,952923732,100621216,855057909,91666737,851659260,185065665,251712830,804964508,913796429,383794705,991849305,196900074,964943821,992357070,579689446,987138751,445557535,672847035,444321622,955352037,342305038,452766116,171126923,50404519,39285203,318258747,594410184,866557474,111952045,421583482,135788588,552647019,65595664,74031483,276175145,432938383,625778705,906059743,439670773,191985777,886393550,30516077,902979291,722173543,436143304,716938379,426105363,426801861,308874641,689398127,521991251,196332991,554925901,564424107,643156434,718351677,430967549,461385894,327793539,34667831,672492786,488780013,811521438,618688290,176638117,294294222,429424147,515073835,433879053,536656488,746223652,375206721,320173655,933395395,288107606,232989325,938954195,848892468,807022406,130198794,3045809,579975428,894969616,756760698,548438348,977436554,278540363,675776617,220917624,150109636,725721838,861305137,735169679,746218690,535502274,431439239,635740827,103691398,160783046,721397586,875593162,909301788,450418843,31014212,285398432,418855700,916095620,241001832,345930576,424395009,81073221,105611021,360022612,528336854,309490069,407688054,74297602,533200202,783592828,618725998,321554599,558332311,462266791,164076388,74984325,766451793,732234516,362390488,374637426,918733205,885288632,751984118,708221029,132140826,478113605,824959677,51433295,847423980,341974922,339094631,437472260,749840427,794594701,939937437,905707663,495192439,96819138,289114062,201973629,614633683,132699483,646119516,200312882,833261445,954183784,568132093,176270425,193119400,831654342,360631524,577887922,283467190,384125024,224060908,953291298,842083823,420208670,941103100,995707078,748617420,738698317,282823993,748366169,620330241,956391852,632419710,480291493,347332390,691509959,5299876,996427180,733941077,108743416,702118760,403650694,440437939,70753311,171996450,844850621,800764218,361513171,126196425,19041988,403302590,302918557,904796598,377183879,447327634,814435769,732494111,742948905,172362671,555139599,345875050,472312431,146454459,359071132,612999364,806616304,473140274,214575604,697394904,912389114,527017756,213400225,846615165,874836191,330246977,95287300,117782326,776010985,555935299,673037819,584952290,58292672,971300441,729222255,917452038,966965486,210543083,227889148,374360002,53016034,110516744,453490529,997722432,351860638,858912724,715880908,580524077,930632436,859733648,416134325,26834664,342127531,157547180,159967843,482151119,182900015,318648910,887350978,520151363,450547073,849290385,285137253,65294625,882995124,156482138,967884887,183796467,597965031,141672755,504064243,369617804,780354496,515252340,352496923,309497588,880834583,293073035,914987494,824526118,64531778,271629263,12609440,455521327,175291335,326503746,32561971,630030944,63377450,824367662,866571100,195407224,566134603,436936677,773424494,11910819,37319084,211203205,831526781,216483582,744132498,278421813,285709789,862345746,403879705,25946799,690037946,794451014,44859194,68998845,493851573,790576423,531188075,799332730,175729189,988582065,249681280,367174765,708848480,272043071,439955735,135190616,303788681,174030101,710206078,803126740,31148574,48577416,185848073,700956159,822493124,400541017,750132238,291010994,2417690,991637314,54154200,98974215,391941919,565495219,442839759,284176655,256394674,445160788,43513490,91335983,400855168,583784192,890963476,162521529,184866908,520730950,266971826,342180084,862709476,689688008,622432139,213354367,182102371,312974638,543247,428907343,530551580,789356644,229102214,526482101,839353385,984603023,170540287,899371235,614080807,497475319,205443584,191213863,1038738,706462959,661729991,633295711,489442098,700434331,903760883,165888123,110466872,43659707,544708986,761114871,957945047,140007737,678775583,527289137,835396981,477697076,848502274,400534375,961946116,571874802,62771953,851341358,964970426,354703747,530969856,31519616,420397913,274392673,106541642,876157639,451709036,359984410,496203486,74531190,845379974,641259599,190528692,46864955,441224057,341916485,93829281,145867184,747715262,66653701,652837318,735469492,948952430,814913703,292085651,126520791,449015101,904491450,560675444,107371939,833411368,670576989,213645233,994611728,718632736,773500756,849030854,195602780,89133095,922393771,43890002,502622238,123450958,551365013,971426953,199490892,307353660,658893175,198467869,763749916,751034518,505707381,660033627,727910812,121278376,474554880,628645621,716320035,829258116,703514787,882535290,262759490,610219395,140397723,983781226,831018085,273047196,666449333,286959606,28254947,184645929,337315005,888957144,235058473,838559273,750877537,249362417,723706946,702943792,412496677,785442919,339419203,327180619,508034832,823089783,591388059,996053098,395739583,290363292,681959805,972635793,427462538,369306487,914663773,59779351,267655835,766966558,491726575,438277435,772926775,427208069,279509148,872343766,305254099,875472689,169896938,88087624,555631159,964825237,434269323,833702888,639090751,797363670,949816619,276795263,887528394,65964121,884706539,969871550,69989055,674613386,272630226,477534018,349371021,754426282,566740080,345707456,674382670,913233920,633206254,863831882,509661672,416873296,460775591,780395660,414085541,784159202,465253705,721739311,835377409,339594075,435104066,981117173,690733012,150721121,253440769,509320325,214492417,246631500,622435124,300857278,481079497,827293565,935441795,306365938,113455452,39044254,771556083,184047350,999742921,481964964,853032834,917147861,681905782,686018065,8712334,290973603,984480492,974547384,266818878,898027224,825455543,171440849,5520732,752473368,221433127,122136599,97697727,826370359,627330879,267387345,930054806,843489827,601423864,578048980,99531417,892649542,645001042,993216391,433084216,274695989,692576623,958715961,203163887,899863454,19052654,589151398,722744658,731599534,701575805,590056381,295005870,275462640,649734192,842587301,451331407,977196860,761047766,62233161,965755041,275336760,662634433,276384123,446332707,885088843,72840411,178657044,682662363,369462967,861216489,37208627,924454496,35919351,417364302,529592963,618298795,343397212,355352558,772931771,86857707,860731728,631000964,749926448,372643201,867010732,586988890,980979683,261099789,501821227,182997672,545493982,3925874,724965747,762477662,941582672,904974319,158323083,989553574,53482490,559082441,927058564,627821890,769125226,284368401,496948759,585732308,727262694,153149243,904742276,676326021,213315006,591675128,162715149,860623803,752004241,236193799,63144489,629704658,785266155,602059176,489292141,630232011,388851437,233109441,692766896,955119676,592057942,72986574,268678088,293882467,861833945,14216057,865656442,759353438,526228276,855249791,318290618,522272165,294524314,712723443,104975569,977990475,798136127,928639933,846376278,700093294,364172998,846886858,79155832,294221191,104331447,253460188,490436695,493945497,265348408,796625670,805205538,340930303,623658195,638551464,412399277,12097173,794659656,386984065,194656913,377021333,984946338,516215989,364935281,923861254,412721407,94193816,297200189,528971455,154502171,361941790,764523099,127622503,963297586,533824634,222907100,393487750,240767149,149505105,80809797,172177041,208949409,375110720,518954890,220026261,572045611,212947936,499800957,755930185,66090955,474935932,543236430,653820344,502079787,555886493,573445777,702383714,957449649,855885072,907130478,588909403,610684737,257170138,859425315,638804725,799763770,999713748,325795762,81652230,504529288,818538935,414433367,233635544,424969440,994745516,971285228,180706675,89996356,975860881,975331176,803777216,217097256,401876948,25187237,713099193,159388347,754821298,779024924,137024212,636253155,233496888,965917437,142386370,672963743,23396746,73826481,455887783,593523687,591180871,737686940,158869127,45972141,433579056,737515396,901043375,581493878,141259376,662099217,796277614,682050856,822819638,857083323,600712676,672540521,44751890,292223468,962384746,170801822,199754721,956848484,145661390,553300341,638325691,306624411,166163073,215395351,196530494,289630361,1943236,858567841,372440210,490014918,143711983,314358077,331636652,343515473,162127396,583677216,98990793,425236722,727203746,280545771,776235234,214200018,1950514,719810018,217272735,829554135,29740234,354384391,951050062,375431643,189985291,912530424,467845505,193689884,879903555,567342077,314934545,515040015,280308358,517183407,824437032,424183009,717410599,126836497,390678967,702792555,200301060,306093955,549728084,368856885,821898944,600957699,887860116,635948704,244385247,10619229,260699243,921011515,616285898,802004713,454989108,906152879,816313276,936784111,881240019,288804281,831286390,818787551,129141720,327918408,819671494,619100477,68902309,88478970,569490534,620061158,794695075,122271863,553588206,365761272,890987959,585878494,689436867,885452153,579066422,246760071,507635296,244103966,158316164,874922621,549921234,889696529,336289657,963218767,556983264,373481701,492669356,233731798,10511971,25169324,621055399,462179924,235935875,368116862,738192922,646723796,58622741,15489769,920291062,175369438,916531658,456464040,796366217,724490489,883649989,500017041,299011199,13920726,510088931,736688578,244239873,816810916,890944030,311727313,771736812,477149632,539514127,162732098,581694519,998422628,913741436,775693059,659637419,110976544,254345740,448477964,676989596,325881464,29198293,987027626,968724901,595289382,127035991,582745847,895613258,649346617,552193432,959756765,196186107,115225751,169467188,120057409,939736792,910919584,850965220,893767915,904139201,280217320,137655046,816380520,109871775,613161489,634772450,89914268,995518190,979340485,167097040,340454897,310892311,345619785,451109974,789966924,493733826,909271880,42588101,198318486,119136191,93895908,867443752,26653156,958118764,392418197,713160336,597512416,663713885,374153383,496358225,786217964,637325163,986702458,824884977,389381850,4114327,135198737,801980098,403500597,843223519,391511828,825614203,827347153,26004342,665937816,555655736,560004231,286046279,196101315,486747388,977987294,670919073,196457992,381101011,675861887,460808426,353366753,688590355,236474749,276666920,891366478,946046038,732963199,132328240,466293699,259223603,194731635,599200604,549849192,708353686,321866316,271302667,205512804,703014797,142158788,596975270,256114404,412717755,355274047,508116714,606458379,173407591,197744149,820319812,511311771,527640489,280446128,156787053,220941934,262022065,57025381,676292743,962079266,476293547,686591069,754530659,803929011,409621591,232812662,179071210,441266802,302520061,673620510,491839671,561688220,839968614,579225120,247698225,621714477,869028792,212862447,879355533,599626755,692792381,484656148,489106026,23968259,498157771,804026616,651375129,417212068,481220296,332479895,405322553,703577148,607669200,860992522,714968540,285051921,371081938,138893763,936444616,834662397,817718356,365818969,979771717,734162144,533744422,706013997,779725397,856551435,556664474,828704185,577608889,333926283,755378150,27777697,560202895,535255484,570129417,979946661,640510273,917460866,901855117,888373051,476439112,401876085,118207639,488353822,453753775,584638044,695117856,862554744,282940002,762501501,133830122,477925444,659078323,725071783,416121411,621543538,149200016,468238752,28827323,887289080,206172677,246374811,95688057,893879607,329788238,501117294,538115955,653382154,196640438,554848545,581281735,999929017,28459288,565807016,866396420,319094367,530136478,126364944,754097554,675625971,275699866,977443160,9418430,317242164,379646033,237990699,977758865,848420651,682032411,883135963,611766903,643911666,38978727,598120398,298920142,27252117,941783172,909692413,74519997,657885928,462406509,624215904,256425252,959079901,456761787,568251199,191304833,597331028,392519731,467832585,189943741,747732870,895405147,797654453,28687237,295680321,392434975,89208188,696278177,464638813,699886201,857845885,482025946,473162535,672770020,612198388,92104085,232169652,607870455,319003324,85726159,670961154,266881388,382420000,302895801,210038104,207544939,525198486,491825522,975413620,152022067,134188854,753416506,4658698,450984561,976479076,194116678,609742797,532681812,854249105,550581419,730933233,426297398,327084814,202166736,85755794,911484592,282760175,846862481,428603855,100449250,757639212,122062501,566247781,419907515,184921644,625748319,479914466,536188391,60951630,722731618,289825065,326026090,282274387,334911623,579142079,299372049,395595476,138808507,855321160,100144549,908142736,324175814,421201055,194962343,45223412,79332475,233889794,615388958,758926795,372979497,973104366,141310348,748523434,485463688,228788942,736210186,132418704,506956900,671069795,208920223,433229114,457082998,867394426,292943746,490780946,563569310,575542652,674959481,671508439,686535602,799683210,654944139,204007563,530396737,874066900,364875239,12533004,334183331,910575441,303955643,688974573,810780074,644004094,546882843,650597597,674874058,779199258,329227396,221082113,277716213,486779832,855270688,665650422,834590084,379351625,830340947,48642648,827489553,66737884,220128383,325442961,373831508,763369243,659807966,842080378,801631980,632280900,663002428,106722858,485323077,805092342,104928628,356442277,742878862,533794702,152616343,299512296,15210430,822648986,169071745,210189343,558265469,796334778,983920232,285806954,509856409,781954106,848843574,95368046,82735258,709296328,455168619,11762772,355788073,177539024,893708178,813456520,691882872,720585197,505533860,665997400,326937757,431710884,10814807,802044392,215767114,826048345,322278082,143938725,614493008,627400790,459526008,292805958,153431387,250689056,267099074,679896679,819750062,234289488,930246225,91657450,148600772,979831779,723722987,319933413,77819133,992748256,371424715,525159253,772856241,423382760,636059160,772756248,210839702,117975280,947120670,917415025,529542832,349801974,388187315,762466921,480092280,701679336,469747342,951893816,915122980,147395125,767314967,855947357,47088512,643223088,579335505,238951226,893320760,708740657,414148019,944390004,200085875,367210225,186327218,570529462,879829023,614255381,189287680,735531467,771642980,27604736,570098544,69552898,812242958,171524537,402454233,405059800,760983461,333882740,924186464,308354124,115647895,659321474,214335030,635448933,433452254,318694939,403470520,236220035,614711350,769174025,283124902,781379553,676776227,111296143,593127018,929781988,123503160,272133427,561762462,411281136,202470123,283777684,661858818,301295401,985336304,89574951,748057712,188991085,762025802,99457331,952953461,758195860,648301746,772144590,117673488,826057456,718133914,156083570,819044442,903790260,715621202,746905602,851749606,643882165,334969337,668368033,76781736,443494575,140128070,637427469,840812600,838924619,163668120,505463512,110441916,472211307,590068228,341629066,47775320,465998566,206611675,94689279,609627934,370346151,887169971,711268799,212694904,180538000,747068064,243310214,132127005,147101001,645164200,835918560,733809629,374681996,399603434,501777860,600516072,725926124,250282937,448153087,175353484,576380910,704246918,119694495,421332396,704456553,628339229,819750436,690896448,4503263,523464653,812463449,351493409,980411650,151562132,356127278,699182127,191426844,152107306,645508204,495643292,767393703,840911534,41872390,532083995,703794632,547801289,902959609,823756350,360248095,544319866,42912802,157641557,203242358,276833175,734100495,996743455,940070881,697213165,25645633,185453353,601210053,187797498,447301451,895345742,513298487,337601386,839959682,370610385,907418075,507724057,489108699,153265907,391568534,29774090,156544632,238263394,379565312,357979421,14086063,160630665,279031519,414399920,695134135,13242144,502572238,670033142,668906571,78196956,734649172,151690776,652967921,511759876,181641405,435106492,549384382,736567540,894745790,270222900,151348632,829232595,268707349,55521810,719109284,774631911,470064852,167484856,162717731,670787914,398139171,658621875,496177807,742200103,651851581,892310934,850693745,10157318,266963542,146198914,491038043,906013288,620301438,785452428,709866528,48120899,169740459,204754757,391266888,392575017,938267591,211239500,896067250,157728527,28024303,989830904,583386057,72454901,892324485,289934162,258686289,826342552,21171401,855058806,739553303,34236911,766459751,199913778,641949852,68014751,66621960,780064899,401327156,591514650,493510290,906462824,475883398,645332905,888273888,147017097,831309512,534563138,703656590,979514665,187982277,1350552,413523783,110569871,979051859,140535966,330145654,354946514,689185553,390210596,909645506,302953413,875683995,913240683,460004295,418738106,735041493,312188587,403807586,461561403,919507554,863120608,794466085,4629188,219864084,655170121,70209087,219907566,15370099,252385364,624585857,168834982,651571174,647500080,313514951,12917290,461321523,386400924,645454161,125487313,724678522,206108393,683500891,757124504,244792786,190807383,353931445,823883633,163768057,198079908,785816624,497392647,483646617,100031107,566587341,919041466,55518037,508704698,401194363,200515929,530075989,641404691,535834925,687057137,67216766,334829278,446499796,614816618,289903094,867247213,657022611,885109408,755894508,605259693,230794043,38996409,329918306,951022912,886441456,671873543,767913210,290303888,937309577,725615399,624772230,740983492,867099672,438338526,234088796,43612463,123448671,181763736,426069326,346985753,504722578,640899416,383620612,959194999,118547976,645453141,8427238,733536648,965311092,52055432,666635846,455546657,436965864,794075212,679154104,611151794,471669523,529675916,233237878,382057057,235336936,872961202,497916326,122414324,685633673,921680793,717981064,45939489,556110986,346538665,132245940,157551769,754155812,76111743,693467072,249671391,178369494,197528405,283931439,159951299,447914188,818955077,322465437,871146654,342571217,380924866,278141134,845462210,981422602,908377645,879859089,963741722,974457428,86499759,360534997,428915711,308710849,879886095,387604278,748520813,131294295,793190049,47206779,623971943,351459179,233717070,397952175,361552068,148946141,229255095,546057725,694693783,729478073,571419000,93848052,496743013,532690061,888918441,843632272,765136173,159559905,386694780,666781865,607886111,697945194,774053430,136826403,249091338,360842113,349217778,474010089,938939254,188961665,409196032,978845690,444747251,925274072,867659441,845174720,293849504,46410444,640538496,385062441,334188645,928354875,575879521,267832150,780072225,288741479,878826216,216189326,786149992,472022717,556477047,170954100,709194865,670761056,716631389,194590985,538376597,650241778,266922512,978294610,393790142,919286902,793594816,987970319,225148839,768790519,551846973,10318566,72293624,380128631,608138128,174557761,38787541,755448591,633803917,167493066,147750767,300356025,215951440,113556131,303721284,32555852,204824531,869609932,320038303,628519760,956250747,555124443,930075950,91679878,671686822,879501924,750130465,299641760,863699371,193332595,251115217,475749703,685368984,947351351,457230974,589726553,523858286,729984126,195520131,379460100,609456405,762468539,431767552,577276920,631522308,337567895,257815814,135095319,532943607,750390822,168327597,125219639,390320956,198467821,308720445,422350520,729727471,757993056,930396380,43282974,115075841,39131252,726769614,679800378,306512568,671900285,34205451,263587205,149849719,951246674,136999859,284485577,137755236,318041646,644512528,82895306,339678331,261342531,627900203,937210215,871480773,740473885,401847271,166044760,478676748,799193176,37784638,420284957,120643194,647944965,446275019,420382041,3736007,273455707,972264950,856659538,649885662,448610032,830914991,366486476,717495162,779329259,244883874,139528589,976297819,704159169,206164,217754263,240702824,454412700,438273468,536568514,984160726,740716172,229464441,354468398,839808622,675096113,402929192,364587751,537039497,560943619,279508943,66783314,478166070,127080499,287305804,348443081,378313406,922511108,306984667,44160569,500804103,880695459,927691535,503125552,156444002,552812119,808603664,806838537,346590621,800052985,10219799,809697342,776597950,745833066,209401435,48280817,816771520,417658187,925433430,473467940,932065597,166923580,397026564,966095443,606835919,146902820,340606196,332830357,325418944,905881049,147791962,571225012,199613546,556601534,182510839,620763212,639178939,305062598,992986183,985323954,781312476,930895734,480048772,682254633,689408341,445003272,411302877,372940115,704546936,737323176,259698036,365358910,717996709,41186558,130712113,781730548,357231350,820353975,292552250,696618515,8634979,6973433,276507991,526791093,993548002,244745790,206789246,234188611,10385578,581109496,996243283,592887599,862726959,207568775,786961159,458885558,159150285,739305923,267551973,120254864,289656121,416961002,792858669,399121701,26940118,674315134,44492117,144821449,475563226,426222799,337496771,986573623,364186020,207369791,123217440,781894451,560842438,742647736,933620559,368311948,394204452,704698135,661381897,162363788,79120524,470360098,962869862,783894113,88862712,845973454,763105228,250500955,437879461,320131080,259377606,317508030,412713744,227212297,220133386,122530325,49429373,281374646,304840820,164000487,263383516,709477379,641243582,66139801,226059007,91223336,130147170,401320289,113300769,713248324,239248395,461089202,359471199,41022431,869522441,431884705,253897007,128724137,441829676,264293080,939108338,857862003,886573793,615557047,859791919,987631452,460039250,21480595,969529121,566238331,956771472,942468589,891632722,632744165,63614333,223186161,987179012,180425007,26015875,723095277,574805294,262926076,216943843,69012856,105394811,256310942,418278384,460087027,852641956,830421746,81472052,473545084,970405982,503581676,722281878,581965720,889949292,292805756,733572130,991785564,580288030,494051876,284380574,744401637,536539896,486495776,8212579,196636768,490399892,692357140,633307267,621832145,343336858,150748259,309335063,549350445,857967125,725056334,402906693,392380718,337460594,837576789,553854737,547964501,647029694,254997374,91503758,771429324,999622590,182324939,160457412,223538229,51701687,725318305,270354646,964590265,881019910,98125708,733786163,994601284,267084058,268612402,713828382,179440967,740276512,608957049,826646137,770775778,508795821,76613167,277900008,493068714,962438374,640407473,237576280,886732913,104480579,570225220,150635410,825125686,218296091,687815359,836324756,27623309,205369788,497240340,481944296,522665337,214156593,119372468,560466858,509215513,870025939,262338230,544555212,393691698,266026285,959574618,668859633,920800812,833014332,340161002,696424671,595821622,278014196,850282541,465492639,256772637,361536327,407688469,886735505,777677120,559764864,467460478,656780354,296615860,8485023,631513322,892329116,643069866,171347014,301059437,646499816,189218592,157288192,30391941,590039233,127333544,402420074,390773139,279289057,479206985,548838734,58700313,124476754,285841307,832694280,454035278,878625554,195909682,832477285,521190488,616797853,59833194,569019761,985551591,9775115,829731358,367800321,145364434,448786469,583992445,39986993,679085637,26478093,610886157,282629926,721302013,5981636,484998718,304954468,933241589,861237997,306526634,54107029,195156258,703005325,101177873,1600888,328064620,58195526,4016553,672992687,167910811,333963289,651905764,816743397,433830555,988413875,73193416,118874380,871696119,868580380,726537759,50632309,497976091,593811097,57593055,896131555,112246859,286537849,571915555,204577630,819974309,277336537,920087973,599644256,466357030,229839954,716691456,770930126,773937319,488153715,793866053,327909197,302331172,411108160,397100739,579923089,55426222,428689645,469515819,374917698,193588395,810501327,287219964,731387589,668084010,625324906,623993536,195554490,391452013,429389364,733709453,894486530,943000606,435947259,523147733,17645939,317988674,717913197,758380361,134670894,248140767,909109840,354678574,524721605,570756453,61361392,247471050,809826616,421950661,72543708,326944534,691636858,983563134,765698308,985254363,831869335,913276638,62210644,462837721,53408788,167375052,915047828,930108783,817192361,292783094,888348633,772588219,529923072,380565147,389967549,829601921,31868161,259163534,366544644,313671257,661725753,141756944,742432871,189027794,866621856,786299001,938383014,545527799,546815672,913263947,292222814,886085847,360964721,420617382,757531300,150636882,235954771,8750876,344673009,454557914,883413317,828614033,480478115,271504491,9729635,165320936,529426782,966355436,549986905,272262430,461783432,586574579,337961049,935212136,750693581,868837826,275458944,318009087,605837160,536521715,320783373,586322048,336375620,519788282,90881304,809264120,956130992,48076741,980531911,365991811,662281452,963414152,316235883,504253466,124835469,868175104,456045987,611978708,483218123,914255153,504598376,838460049,959815290,654143385,823278276,562973577,513250586,18840615,198694068,60795938,29065702,818615962,390809023,425137900,681467516,24453044,461996349,74666850,729636618,296357442,320390978,873500236,701600816,554867944,82056197,69948524,51025465,249109347,926556414,935118418,881613362,289073770,915958839,655942086,787900869,492468396,342222179,983511014,730767551,717463474,428841574,900312310,228687623,767468415,695956946,351798391,530874744,825919271,244747918,773044091,281912181,780418573,643674314,146940892,621272174,224308302,681262900,598038711,420493769,16054099,808478596,245498105,378224294,618525529,77646971,974239216,889377712,669009052,794893276,851646246,441363191,302675272,129572320,782847588,60821205,347978995,316843448,292441913,279286509,984751679,978150255,803075403,393296319,681058103,550715231,74293983,535461797,242901579,187454961,319283768,493667515,581792964,381242599,572080682,229027458,717348897,675605005,210422310,267915869,539886303,493049383,738868666,340843413,962147401,969857715,530259420,202244520,591146151,994067531,191710738,863433118,543285528,61887548,133284854,701078134,85219070,421849925,545434797,123867200,550611682,319280762,402333062,286576846,149656813,467374693,8399304,675892411,501759115,956075640,652300320,850466095,79872353,755468307,348432666,123146738,23981060,629859587,49085949,85483868,271843323,247494529,968746671,14473670,384928859,947843024,582722209,902859308,550013580,889204720,25094430,804416772,593014077,308719005,376879868,741191647,755350281,274728159,565679798,583556044,139449195,947028131,564955853,92002741,768040234,87026366,819322640,181412802,478920119,567711396,919762601,846135096,185325742,785786737,171574608,356951069,670605801,319513970,857325836,797535716,679276752,453144228,70879217,909853855,731853409,878444861,62980745,222979495,104737293,829984607,878009349,465722368,386425951,861550226,918120693,662828023,487358256,998846726,118976521,311024557,248115301,735716804,10956084,189788526,5621,708910937,28876981,451664374,8214051,398295816,189311069,368625028,229303212,112605837,542573392,348914319,404232226,163560648,90877599,294871478,306028131,343989195,933696701,972838640,551779149,460310637,152121078,637247688,512548093,967711803,488940719,606652566,841857072,97049128,303553213,624885123,229876802,298736911,152806502,919893146,539236843,346933461,673367284,315119462,527988906,609896446,287119402,482590616,581269483,594059810,3061473,813483452,479826762,730740290,817484630,636300292,424077532,109868049,427612417,851906004,318227793,922677219,672519835,922364580,616438812,88713183,730169238,860094805,856647961,484147888,313300920,354163589,523499291,987276009,830305745,297231672,548606333,906158611,258999573,91087546,311805574,848427919,830083853,487853090,397921540,907527492,772264208,56282335,649517237,588257246,995409529,90944287,781682616,158955222,51049353,369289212,433762399,612634981,719026753,119876110,880892497,671356732,447025697,777893109,343358201,633525895,48831718,667410337,612381345,770290435,979284421,298932395,777810726,510581130,587499198,630150622,296269757,393086393,880397452,874318669,437067210,329351492,323029217,683360968,5271357,754493576,307347243,119498369,253677040,949707339,536075220,469547532,302860254,759274703,728037900,507834940,860405222,933929848,782938240,260014462,352018585,598130613,112221615,171836488,606511552,891430096,41004489,175908097,944018157,804153606,719592370,800248597,726789026,371825258,439990021,248232432,824416165,779344872,135421597,57434699,25085686,989627606,454651478,936864504,981703157,991004666,645620132,954099006,32452938,669733602,154109399,387093216,378995966,342370637,809295425,9309000,115234053,682429037,467050046,143701469,650616409,75050325,297905509,761735656,680319479,655952554,420923228,505021576,566545714,498931165,356270968,10127536,86214567,722110373,637148038,802880664,975324824,929405654,19938269,970586935,831252466,933225061,707947772,704699345,741327190,971660874,511293780,622934128,875021219,640698671,558951109,454121461,281848757,242966096,19676117,404854673,456354781,44441340,190382129,952481058,590890900,951238092,107640928,104300953,939770093,796657151,594411855,423225928,759108006,652556518,334766943,110839958,894789024,642244075,157301604,813191714,184533568,634227997,849667709,618722786,64555561,818082,230838282,161956762,18165083,446260205,113543962,900429131,751473784,764018746,839832535,322771095,909713268,451787926,137449582,301875588,471144891,699447736,903093216,443756052,564891997,144560088,871790474,405216243,259842175,190555880,944827495,940946852,314967381,448335182,757053902,363035327,248321422,173007339,586964885,510197747,699792672,856911686,348181233,317840270,670095799,499295341,69084627,527109696,458470545,512612336,399661310,315930953,708122890,589345486,743187257,219464903,787544726,465653944,87841722,990485901,752248408,715616877,157923640,302789860,366150373,85675378,465330772,463445643,95104439,488059297,217036610,914083959,823624557,989078772,706239813,577838720,979418813,29636711,386563093,383232840,775164344,217293728,327243216,344184436,149296921,867564969,104607624,549059026,832574977,717638293,147458769,692287073,673573351,25365741,653058265,577986622,517386707,187187313,267945481,899352950,585054421,75171736,623799132,180837811,823445226,363817284,116738589,866183428,188996859,827253190,484496812,406659,323182173,158451159,440988449,149150376,507610275,233239888,723990230,318408771,853253535,553267697,131486640,496965176,805910950,613126270,10645395,27053440,579854541,68956800,380112227,545548111,176721485,934723699,20652056,244994610,716623935,56605996,924398368,438572614,345415180,651436872,395229632,607770892,354671742,132277215,642342374,812598882,701183306,384770918,678920854,391516962,460867192,492703176,402180241,365875860,764665366,993985283,12201530,2849200,982241715,380454648,391519276,549323014,951341155,614980327,288220896,598969753,542571039,343910671,324074679,784162949,324629843,118154263,155032769,786470500,576394201,950197330,798544236,121118187,253519960,787886399,424668356,854823206,172549636,150799927,766765801,718396655,183024467,647073713,323707607,134788770,747145728,379923339,481271015,838017427,96668287,310978853,349991207,953826891,630608853,513568896,506387095,742454941,355640128,428410294,727978520,646171336,27386841,647083910,117823016,799775427,294151414,428371897,489650130,141207001,517996566,424423195,988045309,82317638,700468745,907071686,894159539,951475846,664848723,177765306,352348135,472814669,794752132,277421258,452252059,600399156,653868469,776015401,35069889,668744431,176738146,56683333,869510056,958098774,91083111,964360365,227552640,33423545,411059510,392332412,783096015,301115040,120509226,958872584,72070155,759705502,568528406,834043496,161745472,331014619,608505508,872703239,590804404,324634182,167712853,362183309,885524720,974645512,255983822,682229852,489305872,709661040,810267805,271561147,937258824,883298353,367844439,813703360,536322225,291148181,794906902};
void exgcd(ll a,ll b,ll& d,ll& x,ll& y)
{
    if(!b){ d=a; x=1; y=0;}
    else
	{ 
		exgcd(b,a%b,d,y,x); 
		y-=x*(a/b); 
	}
}
ll rev(ll a){
    ll d,x,y;
    exgcd(a,mod,d,x,y);
    return d==1?(x+mod)%mod:-1;
}
int n;
char ss[100005];
int main()
{
	freopen("seq.in","r",stdin);
	freopen("seq.out","w",stdout);
	scanf("%d%s",&n,ss);
	int len=strlen(ss);
	if((n&1)||n<len)
	{
		puts("0"); 
		return 0; 
	}
	ll ans=(n-len+1)%mod;
	int s=500001;
	ll t=(n-len)/2;
	ll pos=t/s;
	ll resn=ks[pos];
	for(int i=pos*s+1;i<=t;i++)
		resn=(resn*i)%mod;
	t=t*2; pos=t/s;
	ll res2n=ks[pos];
	for(int i=pos*s+1;i<=t;i++)
		res2n=(res2n*i)%mod;
	ll c=res2n;
	c=(c*rev(resn))%mod;
	c=(c+mod)%mod;
	c=(c*rev(resn))%mod;
	c=(c+mod)%mod;
	t/=2;
	ans=(ans*(c*rev(t+1)%mod))%mod;
	printf("%lld",(ans+mod)%mod);
	return 0;	
}

猜你喜欢

转载自blog.csdn.net/andyc_03/article/details/109975103