#include <bits/stdc++.h>   using namespace std;   const long long Mx = 512;   long long D[Mx][Mx];   int32_t main() {     long long n, m, mod, a = 0, b = 0;     cin >> n >> m >> mod;     vector<long long> C(n);     for (long long i = 0; i < m; i++)       for (long long j = 0; j < n; j++) {         char c;         cin >> c;         if (c ==  1 ) C[j]++;       }     for (long long i = 0; i < n; i++)       if (C[i] == 0)         a++;       else if (C[i] == 1)         b++;     D[0][0] = 1;     for (long long d = 1; d <= a + b; d++) {       for (long long i = 0; i <= d; i++) {         long long j = d - i;         D[i][j] =             (((i >= 2) ? ((i * (i - 1) / 2 % mod) * D[i - 2][j + 2] % mod) : 0) +              ((i >= 1) ? ((i * j % mod) * D[i - 1][j] % mod) : 0) +              ((j >= 2) ? ((j * (j - 1) / 2 % mod) * D[i][j - 2] % mod) : 0)) %             mod;       }     }     cout << D[a][b];   }   