intsol(void){ int f = 1; for (int i = 1; i <= n; ++i) for (int j = i + 1; j <= n; ++j) { while (a[i][i]) { int d = a[j][i] / a[i][i]; for (int k = i; k <= n; ++k) a[j][k] = (a[j][k] - 1ll * d * a[i][k] % P + P) % P; swap(a[i], a[j]), f = -f; } swap(a[i], a[j]); f = -f; } int ans = f; for (int i = 1; i <= n; ++i) ans = 1ll * ans * a[i][i] % P; return (ans + P) % P; }