P3477 [POI 2008] PER-Permutation

Description

A multiset is like a set, but elements may appear more than once. A permutation of a multiset is any ordering of its elements. For example, among the permutations of the multiset $\{1, 1, 2, 3, 3, 3, 7, 8\}$, there are $\{2, 3, 1, 3, 3, 7, 1, 8\}$ and $\{8, 7, 3, 3, 3, 2, 1, 1\}$. We use lexicographic order to compare two permutations: at the first position where they differ, the permutation with the smaller element is considered smaller. All permutations of a given multiset can be sorted increasingly and numbered starting from $1$ (this number is called the rank). Task: Given a permutation of a multiset of size $n$ and a positive integer $m$, compute the remainder modulo $m$ of the rank of this permutation in lexicographic order.

Input Format

- The first line contains two integers $n$ and $m$ ($1 \le n \le 300000,\ 2 \le m \le 10^9$): the size of the multiset and the modulus $m$. - The second line contains $n$ positive integers $a_i$ ($1 \le a_i \le 300000$), the given permutation of the multiset.

Output Format

Output a single integer: the rank of the given permutation in lexicographic order, taken modulo $m$.

Explanation/Hint

Thanks to @远航之曲 for the translation. Translated by ChatGPT 5.