复读数组
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

有一个长为的数组,它是由长为n的数组重复k次得到的。
定义这个数组的一个区间的权值为它里面不同的数的个数,现在,你需要求出对于这个数组的每个非空区间的权值之和。
答案对取模。 

输入描述:

第一行两个整数n和k。
接下来一行n个整数,第i个整数为A_i

输出描述:

输出一个整数,表示答案。
示例1

输入

复制
2 2
1 2

输出

复制
16

说明

数组为1, 2, 1, 2。
对于长为1的区间,共4个,权值为1。
对于长度>1的区间,可以发现权值均为2,共6个。
那么权值和为1 \times 4 + 2 \times 6 = 16

备注:

对于前的数据
对于前的数据
对于前的数据
对于另外的数据
对于另外的数据
对于另外的数据
对于所有数据,