小 Q 与构造
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

虽然题目叫做「构造」,但是请相信我,说不定这道题跟构造一点关系都没有呢?

无论是真是假,这叫什么?这还是叫一种生活方式,这是生活所迫,总之都是想象力贫匮的锅。

小 Q 想要为自己出的题在  评测机上构造数据。

这道题的数据构造方法是这样的:在  中随便挑选几个数出来成为一个集合。很简单吧。

但是小 Q 出的题有一个非常天才的限制,也就是如果选出的集合是,不能存在一个数对 ,满足  或者 。所以说构造一个合情合理的数据是非常难的。

但是小 Q 是一个很有责任心的人,他想要给把自己的题的数据出的更好。于是他将把  给你,想要问,他能构造出多少种符合题目条件的数据?

因为各位都知道这是生活所迫,所以小 Q 好心地,让你求其对  取模的值。

输入描述:

一行三个整数 ,意义如上。

输出描述:

一行一个整数,表示能够构造出的数据数对  取模的值。
示例1

输入

复制
4 2 2

输出

复制
8

说明

一共有  种合法的样例,分别是 
示例2

输入

复制
1000 5 10

输出

复制
4076068
示例3

输入

复制
1000000 40 8

输出

复制
8055001