Universal Cup Judging System

Universal Cup

実行時間制限: 3.0 s メモリ制限: 1024 MB 満点: 100 ハック可能 ✓
統計

Det finns en låda märkt med varje heltal från $1$ till $N$. För varje heltal från $1$ till $N$ finns det dessutom $M$ bollar märkta med det heltalet.

Dessa $NM$ bollar blandas och fördelas sedan i de $N$ lådorna, med exakt $M$ bollar placerade i varje låda.

Det finns $\frac{(NM)!}{(M!)^N}$ möjliga sätt att placera bollarna (om alla bollar betraktas som särskiljbara), och alla dessa arrangemang förekommer med samma sannolikhet.

Du kommer att utföra operationer på dessa lådor och bollar. En operation består av följande steg:

  1. Välj en låda och gå fram till den lådan.
  2. Om det inte finns någon boll i den lådan, avsluta operationen.
  3. Välj en godtycklig boll från den lådan och kasta bort den utanför lådan.
  4. Gå slutligen fram till den låda vars märkning matchar märkningen på den senast bortkastade bollen, och gå tillbaka till steg $2$.

Definiera din poäng som antalet operationer som krävs tills alla $NM$ bollar har kastats bort. Du vill minimera denna poäng.

Beräkna väntevärdet av poängen när du agerar optimalt, modulo $998244353$.

Input

Den första raden innehåller $N$ och $M$ i denna ordning, åtskilda av mellanslag. ($1 \le N \le 10^5, 1 \le M \le 100$)

Output

Skriv ut svaret.

Examples

Input 1

2 2

Output 1

166374060

Input 2

3 1

Output 2

831870296

Input 3

100000 100

Output 3

402978825

Note

För det första exemplet är de möjliga bollarrangemangen och motsvarande optimala tillvägagångssätt följande:

  • Lägg två bollar märkta med $1$ i låda $1$, och två bollar märkta med $2$ i låda $2$. (Sannolikhet $1/6$)
    • I den första operationen går du fram till låda $1$. Därifrån tar du ut en boll märkt med $1$ och går fram till låda $1$. Sedan tar du ut en till boll märkt med $1$ och går fram till låda $1$ igen. Nu är låda $1$ tom, så du avslutar operationen.
    • I den andra operationen går du fram till låda $2$. Därifrån tar du ut en boll märkt med $2$ och går fram till låda $2$. Sedan tar du ut en till boll märkt med $2$ och går fram till låda $2$ igen. Nu är låda $2$ tom, så du avslutar operationen.
    • I detta fall är den minsta möjliga poängen $2$.
  • Lägg en boll märkt med $1$ och en boll märkt med $2$ i var och en av låda $1$ och låda $2$. (Sannolikhet $2/3$)
    • I den första operationen går du fram till låda $1$. Därifrån tar du ut en boll märkt med $1$ och går fram till låda $1$. Sedan tar du ut en boll märkt med $2$ och går fram till låda $2$. Sedan tar du ut en boll märkt med $2$ och går fram till låda $2$. Sedan tar du ut en boll märkt med $1$ och går fram till låda $1$. Nu är låda $1$ tom, så du avslutar operationen.
    • I detta fall är den minsta möjliga poängen $1$.
  • Lägg två bollar märkta med $2$ i låda $1$, och två bollar märkta med $1$ i låda $2$. (Sannolikhet $1/6$)
    • I den första operationen går du fram till låda $1$. Därifrån tar du ut en boll märkt med $2$ och går fram till låda $2$. Sedan tar du ut en boll märkt med $1$ och går fram till låda $1$. Sedan tar du ut en boll märkt med $2$ och går fram till låda $2$. Sedan tar du ut en boll märkt med $1$ och går fram till låda $1$. Nu är låda $1$ tom, så du avslutar operationen.
    • I detta fall är den minsta möjliga poängen $1$.

Sammanfattningsvis är den minsta poängen $2$ med sannolikhet $1/6$, och den minsta poängen är $1$ med sannolikhet $5/6$, så det förväntade värdet av poängen totalt sett är $7/6$. Skriv därför ut $166374060$, vilket representerar detta värde modulo $998244353$.

Definition av väntevärde modulo $998244353$

Det kan bevisas att det sökta väntevärdet alltid är ett rationellt tal. Under begränsningarna i detta problem garanteras dessutom att om väntevärdet skrivs som ett förkortat bråk $\frac{y}{x}$, så är $x$ inte delbart med $998244353$.

I detta fall finns det ett unikt heltal $z$ mellan $0$ och $998244352$, inklusive, som uppfyller $xz \equiv y \pmod{998244353}$. Skriv ut detta $z$.

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#1526EditorialOpen题解jianglyView

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.