Setsuna的K数列
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Komorebi非常喜欢数列,但他实在太弱了无法想象出一个数列该如何构造,于是他就去FD(Frog Department)找Setsuna求助,Setsuna是一名光荣的FTCer(Frog,Time Controller),并没有很多空闲,就随口给Komorebi构造了一个神秘的K数列,构建方法如下:
1、创建一个集合A_K,集合内包含K的所有整数次幂,如当时,A_3包含,但不会包含
2、取A_K内任意个元素各一个相加,并将他们放进一个新的集合B_K
3、将B_K内的元素从小到大排序,得到的有序数列即是一个K数列S_K
例如当时,
Komorebi拿到这个数列后很开心,每天都要盯着这个K数列看很久。久而久之这个数列有些数被Komorebi弄丢了,Komorebi想复原这个数列,又不好意思再去找Setsuna,他就只能来求助你了。
Komorebi想知道K数列S_K的第n项是多少,你可以帮帮他吗?当然这个数有可能会非常大,因此请输出答案对取模后的结果。

输入描述:

仅一行包含两个整数nK

输出描述:

一个整数,表示答案对取模后的结果。
示例1

输入

复制
5 3

输出

复制
10

备注: