答案为:

代码

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(auto i=(a);i<=(b);++i)
#define dep(i,a,b) for(auto i=(a);i>=(b);--i)
#define pb push_back
typedef long long ll;
const int maxn=(int)1e6+100;
int n,m,mod;
ll a[maxn],c[maxn];
void solve(){
    rep(i,1,n) scanf("%lld",&a[i]);
    sort(a+1,a+1+n);
    rep(i,1,m+1) c[i]=0;
    rep(i,1,n) c[1]++,c[a[i]+1]--;
    rep(i,1,m+1) c[i]+=c[i-1];
    ll ans=1;
    rep(i,1,n-1) (ans*=a[i])%=mod;
    rep(i,2,m) (ans*=c[i])%=mod;
    printf("%lld\n",ans); 
}
int main(){
    while(~scanf("%d%d%d",&n,&m,&mod)) solve();    
}