#arc0093. [arc009_3]高橋君、24歳

[arc009_3]高橋君、24歳

问题

高桥君的生日是10月20日,他考虑邀请朋友参加生日聚会。因此,他决定给大家发出邀请函。

由于高桥君很害羞,所以他决定给每个人发送邀请函。

由于高桥君无法想出好的信件格式,他直到生日前一天才写完所有人的信件。

他匆忙地把每个朋友的信件一个接一个地放进信箱里,但不小心把其中的K封信放进了其他朋友的信箱。

回到家后,高桥君意识到这件事非常匆忙。

为了使他稍微振作起来,告诉他可能的信箱和信件组合的数量,这个数除以1777777777(质数)的余数。


输入

输入是从标准输入中按以下格式给出的两个整数N和K。

  • 输入只有一行。
  • 第一行包含两个整数N和K,分别表示高桥君的朋友人数和高桥君错误放入的朋友的数量。
    • K不会超过N。
  • 每个朋友都收到了一封信,并且没有多余或少了。
  • K个人收到了其他朋友的信,而N-K个人收到了自己的信。

部分得分

测试数据集包含以下两种测试数据集中的一种,每个数据集中包含的测试数据如下,整数N和K的范围不同。

如果对包含在某个测试数据集中的所有测试数据都输出了正确的答案,则即使在其他测试数据集中输出错误也会给出部分得分。

  • small(40分)
    • 2≦N≦8
    • 2≦K≦8
  • large(60分)
    • 2≦N≦777,777,777,777,777,777
    • 2≦K≦777,777

输出

请在标准输出中以一行的形式输出可能的信箱和信件组合的数量,将其除以1777777777(质数)后取余数。

注意,在最后要输出换行符。


输入示例1


3 2

输出示例1


3
  • 高桥君有3个朋友,分别是A,B,C。下面是可能的组合:
    1. A收到它自己的信,B收到C的信,C收到B的信。
    2. B收到它自己的信,A收到C的信,C收到A的信。
    3. C收到它自己的信,B收到A的信,A收到B的信。
  • 满足条件的组合只有3种,所以答案是3。

输入示例2


5 3

输出示例2


20

输入示例3


4 4

输出示例3


9

输入示例4


8 4

输出示例4


630

输入示例5


777 77

输出示例5


1084428318

来源

ARC 009