#include <bits/stdc++.h>
using namespace std;
long long n,p,a[605][605];
int main()
{
scanf("%lld %lld",&n,&p);
for (int i=1; i<=n; i++)
{
for (int j=1; j<=n; j++)
{
scanf("%lld",&a[i][j]);
a[i][j]%=p;
}
}
if (n>2)
{
long long x=0,y=0,r=1;
for (int i=1; i<=n; i++)
{
for (int j=0; j<n; j++)
{
r*=a[(i+j)%n+1][j+1],r%=p;
}
x+=r,x%=p,r=1;
}
for (int i=1; i<=n; i++)
{
for (int j=0; j<n; j++)
{
r*=a[((i-j)%n+n)%n+1][j+1],r%=p;
}
x-=r,x%=p,r=1;
}
cout<<(x%p+p)%p;
}
else if (n==2)
{
cout<<((a[1][1]*a[2][2]-a[1][2]*a[2][1])%p+p)%p;
}
else
{
cout<<a[1][1];
}
return 0;
}
在很多个数据点都输出了 0。