发现直接做不容易并且 $m$ 很小,于是选择观察性质。考虑鸽笼原理,当 $n>m$ 时,必有两项 $a_i,a_j$ 模 $m$ 同余。所以如果 $n>m$ 答案就是 $0$,否则暴力即可。
```cpp
int main(){
cin >> n >> m ;
for (int i = 1 ; i <= n ; ++ i)
scanf("%lld", &base[i]) ;
if (n > m) return puts("0"), 0 ;
for (int i = 1 ; i <= n ; ++ i)
for (int j = i + 1 ; j <= n ; ++ j)
(ans *= (LL)abs(base[i] - base[j])) %= m ;
cout << ans << endl ;
}
```